쿠키는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다. 브라우저는 이 데이터 조각을 저장해 놓았다가 동일한 서버에 재 요청시 이 정보를 함께 전송한다.
쿠가가 클라이언트 측에 정보를 저장할 수 있는 유일한 방법이 였을 때에는 클라이언트 측에 정보를 저장하기 위해 쿠키가 주로 사용 되었지만, 모든 요청 마다 쿠키가 함께 전송되기 때문에 성능 저하의 원인이 될 수 있어 지금은 클라이언트 측에 데이터를 저장하기 위해서 로컬스토리지나 세션스토리지를 사용 하는 것이 좋다.
- 세션 관리 (Session Management) : 서버에 저장해야 할 로그인,장바구니 등의 정보 관리
- 개인화 (Personalization) : 사용자 선호, 테마 등의 정보 관리
- 트레킹(Tracking) : 사용자 행동을 기록하고 분석하기 위한 정보 관리
서버에서 쿠키를 전송할 때 만료일, 지속 시간 도메인, 경로 속성 등을 추가해서 전송 할 수 있습니다. 만료된 쿠키는 서버로 다시 전송되지 않습니다. 도메인과 경로 속성이 정의 되었다면, 특정 도메인과 경로에만 쿠키를 전송 할 수 있도록 제한할 수 있습니다.
쿠키가 유지되는 시간을 지정할 수 있는 속성으로 Expires와 Max-Age 두가지가 있습니다.
속성에 정의된 날짜에 삭제되는 쿠기를 만든다.
expires=Tue, 19 Jan 2038 03:14:07 GMT
속성에 정의된 기간 이후에 삭제되는 쿠키를 만든다.
max-age=3600
max-age는 expires 옵션의 대안으로, 쿠키 만료 기간을 설정할 수 있게 해줍니다. 현재부터 설정하고자 하는 만료일시까지의 시간을 초로 환산한 값을 설정합니다.
0이나 음수값을 설정하면 쿠키는 바로 삭제 된다.
Expires (유효일자)나 Max-age(만료기간) 옵션이 지정되어있지 않으면, 브라우저가 닫힐 때 쿠키도 함께 삭제된다. 이런 쿠기를 "세션 쿠키"라고 부른다.
세션쿠키는 현재 브라우저의 세션이 끝날 때 삭제되는 쿠키 이다.
크롬 브라우저에서 크롬을 종료한후에도 쿠키가 남아 있는 이슈가 있는데, 백그라운에서 동작하고 있는 크롬 프로세스를 모두 종료해야 세션 쿠키가 삭제 된다.
참고
https://beomy.github.io/tech/browser/cookie/
https://ko.javascript.info/cookie