[BACKEND]Cookie
Cookie
HTTP의 stateless(무상태성)를 보완
서버가 일방적으로 클라이언트에 전달하는 작은 데이터
서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단
기본적으로 클라이언트 브라우저에 저장
해당 도메인에 대해 쿠키가 존재하면, 웹 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달
로그인 상태 유지, 장바구니 정보 등
쿠키 전달 방법
서버의 응답헤더
- Set-Cookie: UserId=kimcoding path=/ Expire=..
- Set-Cookie: email=..path/Expire=/…
클라이언트는 매 요청시마다 자동으로 쿠키 포함
- Cookie: UserId=kimcoding
- Cookie:email=…
쿠키 옵션
'Set-Cookie':[
'cookie=yummy',
'Secure=Secure; Secure',
'HttpOnly=HttpOnly; HttpOnly',
'Path=Path; Path=/cookie',
'Doamin=Domain; Domain=codestates.com'
]
- Domain - 서버와 요청의 도메인이 일치하는 경우 쿠키 전송
- Path - 서버와 요청의 세부경로가 일치하는 경우 쿠키 전송
- 설정된 경로를 포함하는 하위 경로로 요청 시 서버에 쿠키 전송 가능
- MaxAge or Expires - 쿠키의 유효기간 설정
- MaxAge - 초 단위로 설정
- Expires - 유효 날짜 지정
- 세션 쿠키 - MaxAge 또는 Expires 옵션이 없는 쿠키, 브라우저가 실행 중일 때 사용할 수 있는 임시 쿠키, 브라우저 종료 시 삭제
- 영속성 쿠키 - MaxAge or Expires에 따른 쿠키
- HttpOnly - 스크립트의 쿠키 접근 가능 여부 결정
<script>
태그로 접근 가능 -> XSS 공격에 취약- 개인정보, 민감한 정보는 회피
- true 시 JS로 쿠키 접근 불가
- 기본 false, document.cookie로 접근 가능
- Secure - HTTPS 프로토콜에서만 쿠키 전송 여부 결정
- true 시 HTTPS일 때만 쿠키 전송
- SameSite - CORS 요청의 경우 옵션 및 메서드에 따라 쿠키 전송 여부 결정
- 옵션에 따른 선버의 쿠키 전송 여부
- Lex - GET 메서드 요청만 쿠키 전송 가능
- Strict - 쿠키 전송 불가, same-site인 경우만 쿠키 전송 가능(서버의 도메인, 프로토콜, 포트가 같은 경우)
- None - 모든 메서드 요청에 쿠키 전송 가능, HTTPS 프로토콜과 Secure 쿠키 옵션 필요
- 옵션에 따른 선버의 쿠키 전송 여부
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
기능 구현하기
댓글남기기