Cookie
사용법
Cookie 헤더는 앞서 Set-Cookie 응답 헤더로 저장된 이름-값 쌍을 전달합니다. 서버가 쿠키를 설정하면 브라우저는 경로, 도메인, 만료 규칙에 따라 같은 도메인에 대한 이후 요청에 해당 Cookie 헤더를 포함시킵니다.
쿠키는 상태를 유지하지 않는 HTTP 프로토콜 위에서 상태를 유지합니다. 흔한 용도로는 세션 관리, 인증 토큰, 사용자 환경 설정, 추적 식별자가 있습니다. 서버는 Cookie 헤더를 읽어 클라이언트를 식별하고, 세션 컨텍스트를 복원하거나 저장된 설정을 적용합니다.
여러 쿠키 쌍은 세미콜론과 공백으로 구분되어 하나의 Cookie 헤더 줄에 나타납니다. 이 구문은 각 쿠키의 이름과 값만 담습니다. Expires, Path, Secure, HttpOnly 같은 속성은 Set-Cookie 헤더에만 존재하며 Cookie 헤더에는 반복되지 않습니다.
Cookie: name1=value1; name2=value2
예시
서버가 응답에서 쿠키 세 개를 설정합니다. sid 쿠키는 세션 식별자를 담고, lang은 언어 설정을, theme은 표시 설정을 기록합니다.
HTTP/1.1 200 OK
Content-Type: text/html
Set-Cookie: sid=abc123; Path=/; Secure; HttpOnly
Set-Cookie: lang=en; Path=/
Set-Cookie: theme=dark; Path=/
브라우저는 같은 도메인에 대한 다음 요청에 해당되는 모든 쿠키를 포함시킵니다. Cookie 헤더에는 이름-값 쌍만 실립니다.
GET /dashboard HTTP/1.1
Host: example.re
Cookie: sid=abc123; lang=en; theme=dark
로그인 엔드포인트로 보낸 POST 요청이 세션 쿠키를 받습니다. Secure 속성은 쿠키가 HTTPS로만 전송되도록 보장하고, HttpOnly는 JavaScript 접근을 막습니다.
HTTP/1.1 200 OK
Set-Cookie: token=eyJhbGciOi; Secure; HttpOnly; SameSite=Strict
이후 요청은 토큰을 자동으로 실어 보냅니다.
GET /api/profile HTTP/1.1
Host: example.re
Cookie: token=eyJhbGciOi
참고
진행 중인 쿠키 명세 개정은 SameSite 기본값, __Host- 및 __Secure- 접두사, 서드파티 맥락의 쿠키를 위한 Partitioned 속성으로 쿠키 처리 방식을 손봅니다. 해당 초안은 활발히 개발되고 있습니다.
SameSite 강제 적용
SameSite 속성이 설정되지 않으면 브라우저는 기본적으로 SameSite=Lax를 적용합니다. 이는 대부분의 교차 사이트 쿠키 전송을 기본적으로 차단합니다. SameSite=None에는 Secure 플래그가 필요합니다. 전체 SameSite 참고 자료
SEO 영향
Googlebot은 오리진이 설정한 쿠키를 전송하지만 별개의 크롤 세션 간에 쿠키를 유지하지는 않습니다. 애셋 도메인의 큰 쿠키는 렌더링 중 요청 크기를 키웁니다. 정적 애셋용으로 쿠키 없는 도메인을 쓰면 이 부담을 피할 수 있습니다.