HTTP 쿠키는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각.
브라우저는 그 조각을 저장해 놨다가 동일한 서버에 재요청이 들어오면 저장된 데이터를 함께 전송한다.
세션관리
서버에 저장해야할 로그인, 장바구니, 게임 스코어
개인화
사용자 선호, 테마
트래킹
사용자 행동을 기록하고 분석
요즘은 modern storage APIs를 사용함.
HTTP 요청을 수신할 때, 서버는 응답과 함께 Set-Cookie헤더를 전송한다.
쿠키는 보통 브라우저에 의해 저장되며, 그 후 쿠키는 같은 서버에 의해 만들어진 요청들의 Cookie HTTP헤더 안에 포함되어 전송된다. (만료된 쿠키는 더이상 보내지지 않음)
추가적으로, 쿠기가 보내지는 것을 특정 도메인 혹은 경로 제한을 설정할 수 있다.
Set-Cookie HTTP 응답 헤더는 서버로부터 사용자 에이전트로 전송된다.
간단한 쿠키는 다음과 같이 설정될 수 있음:
Set-Cookie: <cookie-name>=<cookie-value>
아래 서버 헤더는 클라이언트에게 쿠키를 저장하라고 전달:
HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry
[page content]
이제, 서버로 전송되는 모든 요청과 함께 브라우저는 Cookie 헤더를 사용하여
서버로 이전에 저장했던 모든 쿠키들을 회신:
GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry
위에서 생성된 쿠키는 세션 쿠키입니다: 클라이언트가 종료되면 삭제된다.
이유는 Expires 혹은 Max-Age를 명시하지 않았기 때문.
그러나 웹 브라우저는 세션 복구를 할 수 있으며, 이 기능은 브라우저가 결코 닫힌 적이 없던 것처럼 대부분의 세션 쿠키들을 영속적인 것으로 만듭니다.
클라이언트가 닫힐 때 만료되는 대신에, 영속적인 쿠키는 명시된 날짜(Expires)에 만료되거나 혹은 명시한 기간(Max-Age) 이후에 만료됩니다.
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;