쿠키(Cookie)
"작은 텍스트 파일" 유형의 쿠키는 웹사이트가 사용자를 식별하기 위해 사용자 측(클라이언트)에 저장하는 데이터(보통 암호화됨)를 의미합니다.
상호작용이 필요한 웹 애플리케이션은 HTTP 프로토콜이 상태를 유지하지 않는(Stateless) 특성 때문에 큰 제약을 받습니다. 즉, 서버는 사용자가 직전에 무엇을 했는지 알지 못합니다. 전형적인 온라인 쇼핑 시나리오를 예로 들면, 사용자가 여러 페이지를 둘러보며 쿠키 한 상자와 음료수 두 병을 장바구니에 담습니다. 하지만 결제 시점에 HTTP의 무상태성 때문에 서버는 추가적인 수단 없이는 사용자가 무엇을 샀는지 알 수 없습니다. 쿠키는 이러한 HTTP의 무상태성을 보완하기 위해 사용되는 "추가적인 수단" 중 하나입니다. 서버는 쿠키에 포함된 정보를 설정하거나 읽음으로써 서버와 사용자 간의 세션 상태를 유지할 수 있습니다.
방금 전 쇼핑 시나리오에서 사용자가 첫 번째 상품을 선택하면, 서버는 해당 상품에 대한 정보가 기록된 쿠키와 함께 웹 페이지를 사용자에게 보냅니다. 사용자가 다른 페이지를 방문할 때 브라우저는 쿠키를 서버로 보내고, 서버는 사용자가 이전에 무엇을 구매했는지 알게 됩니다. 사용자가 계속해서 음료를 구매하면 서버는 원래의 쿠키에 새로운 상품 정보를 추가합니다. 결제 시 서버는 전송된 쿠키를 읽어 최종 처리를 합니다.
쿠키의 또 다른 전형적인 용도는 웹사이트 로그인입니다. 사이트에서 사용자 이름과 비밀번호를 입력할 때 "다음에도 자동 로그인" 체크박스를 본 적이 있을 것입니다. 이를 체크하면 다음에 동일한 사이트를 방문했을 때 사용자 이름과 비밀번호를 다시 입력하지 않아도 이미 로그인된 상태임을 알게 됩니다. 이는 이전 로그인 시 서버가 로그인 자격 증명(사용자 이름과 비밀번호의 암호화된 형태)이 포함된 쿠키를 사용자의 하드 드라이브로 보냈기 때문입니다. 두 번째 방문 시 쿠키가 만료되지 않았다면 브라우저가 이 쿠키를 서버로 보내고, 서버는 자격 증명을 검증하여 사용자가 로그인할 수 있게 해줍니다.
