- 시작하기 앞서 -
필자는 쿠키에 대해서 어렸을 적부터 궁금증이 있었고 쿠키 삭제 라는 게 뭐길래 뭔가 안될때(잘 기억이 안나지만 아마 로그인 문제일거 같다.) 삭제하면 해결됐을까? 라는 의문이 있기도 했었다. 제일 흥미로운 파트이기도 하다. 왜 쿠키 라고 부를까?
루 몬툴리
라는 웹 프로그래머가 만들었다. 유닉스에서 프로그램이 수신 한 그대로(변환X) 반환하는 데이터 패킷을 의미하는 매직 쿠키
라는 용어에서 비롯되었다.
HTTP는 무상태 프로토콜 이기에
서버는 클라이언트의 요청 응답 후 이전 요청을 기억하지 않는다.
대안 : 모든 요청에 사용자 정보를 포함
➡️ 이것은 개발의 어려움과 브라우저의 재 시작 시 세션 유지 문제등이 있다.
이 문제를 해결하기 위해 쿠키가 등장했다.
Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)
Cookie : 클라이언트가 서버에서 받은 쿠키를 저장, HTTP 요청시 서버로 전달
// 쿠키 예시
SIDCC=LGoEy2_QWEsabc(...); expires=Sat, 10-Aug-2024 00:00:00 GMT;
path=/; domain=.google.com; priority=high; Secure
// 해당 정보는 크롬 브라우저 f12로 확인한 내용
사용처
쿠키 정보는 항상 서버에 전송됨
주의!
Set-Cookie
를 만들어서 응답한다. Cookie
값을 넘긴다.모든 요청에 쿠키 정보를 자동 포함
// 만료일이 되면 쿠키 삭제
Set-Cookie: expires=Sat, 10-Aug-2024 00:00:00 GMT;
// 0이나 음수를 지정하면 쿠키 삭제
Set-Cookie: max-age=3600 // (3600초)
세션 쿠키: 만료 날짜를 생략시 브라우저 종료시 까지만 유지
영속 쿠키: 만료 날짜를 입력시 해당 날짜까지 유지
domain=example.org;
명시 : 명시한 문서 기준 도메인 + 서브 도메인 포함
생략 : 현재 문서 기준 도메인만 적용
domain=.google.com;
위에서 쿠키예시로 든 구글 쿠키 정보중 도메인이 .google.com으로 되어있다. 검색해서 찾아보니 .
은 서브 도메인으로 명확한 지정이였다.
path=/;
path=/
루트로 지정Secure
HttpOnly
SameSite
XXS : 사이트 간 스크립팅, 크로스 사이트 스크립팅
XSRF : 사이트 간 요청 위조, 크로스 사이트 요청 위조
📖 출처 및 참고자료