cookie란, 웹 서버가 브라우저에 보내는 데이터 문자열로, 브라우저가 미래에 동일한 도메인에 request를 보낼 때 서버가 각 사용자를 식별하기 위해 사용된다. 쿠키는 이름=값 형태의 리스트를 가지며 Set-Cookie
또는 Set-Cookie2
같은 HTTP response header에 기술되어 사용자에게 전달된다.
Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]
브라우저는 서버에서 전달된 Set-Cookie 또는 Set-Cookie2 헤더에 있는 쿠키 콘텐츠를 브라우저 쿠키 데이터베이스에 저장한다. 이후 사용자가 같은 사이트를 방문하여 서버에 요청을 보내게 될 때 브라우저는 서버가 사용자에게 할당했던(브라우저에 저장되어 있던) 쿠키를 Cookie 요청 헤더에 기술하여 전송한다.
각 브라우저마다 각기 다른 방식으로 쿠키를 저장하며 chrome은 SQLite 파일에 쿠키를 저장하고 있다. 개발자창에서 애플리케이션 탭에 들어가면 브라우저에 저장된 cookie를 확인할 수 있다.
쿠키는 크게 세션 쿠키
(session cookie) 와 지속 쿠키
(persistent cookie)로 나눌 수 있으며 두 쿠키의 차이점은 파기 시점(유지 기간)이다. Discard 파라미터가 설정되어 있거나, Expires 또는 Max-Age 파라미터가 없으면 세션 쿠키가 된다. 즉, 만료 시점을 지정하면 지속 쿠키고 지정하지 않으면 세션 쿠키다.
사용자가 브라우저를 닫으면 삭제된다.
Discard 파라미터가 설정되어 있거나 파기 시점을 가리키는 Expires 또는 Max-Age 파라미터가 존재하지 않는다.
사용자가 사이트를 탐색할 때 관련된 설정과 선호 사항 등을 저장할 때 사용한다.
세션 쿠키와 다르게 브라우저를 닫아도 삭제되지 않고 더 길게 유지될 수 있다. 디스크에 저장되며 브라우저를 닫거나 컴퓨터를 재시작하더라도 남아있다.
파기 시점을 가리키는 Expires(날짜와 시간) 또는 Max-Age(초) 파라미터가 존재한다.
주기적으로 방문하는 사이트에 대한 설정 정보나 로그인 이름을 유지할 때 사용한다.