어떠한 서버도 HTTP통신을 한다면 쿠키를 주고 받을 수 있으며, 클라이언트에서도 쿠키에 접근하고 관리할 수 있다. 또한 HTTP와 HTTPS 사이에도 쿠키를 교환할 수 있고, 같은 도메인이라면 서로 다른 Scheme일지라도 쿠키를 공유할 수 있다.
쿠키는 서버와 클라이언트 모두에서 생성할 수 있다. 일단 쿠키가 한 번 생성되면 브라우저는 해당 쿠키 정보를 기억한다. 그리고 이후의 모든 Request에 쿠키를 포함하여 서버로 전달한다. 서버는 브라우저의 Request에 포함된 쿠키를 읽을 수 있다.
HTTP는 Stateless 프로토콜이다. HTTP는 기본적으로 상태 정보를 기억하지 못하기 때문에 서버는 요청자를 식별할 수 없다. 이러한 문제를 해결하기 위해 서버는 사용자 식별 정보를 쿠키에 저장하며, 쿠키에 저장된 정보를 통해 각 사용자를 구별하는 것이다.
Cookie | Local Storage | Session Storage | |
---|---|---|---|
데이터 유지 | 세션 만료 시 or 만료일 지정 | 영구적인 저장 | 세션 만료 시까지 저장 |
데이터 유지 시점 | 세션: 브라우저 닫기 전 영구: 쿠키 만료 전 | 아이템 삭제 전 | 탭 닫기 전 |
접근 제한 | 도메인 단위 | 도메인 단위 | 세션(탭) 단위 |
데이터 유지 범위 | 다른 탭 O | 다른 탭 O | 다른 탭 X |
데이터 저장 위치 | 세션: 서버 | 영구: 로컬 | 로컬 |
사용 예시 | 다시 보지 않기 팝업창 | 자동 로그인 | 일회성 로그인 |