클라이언트 사이드에서 관리
구성 요소
쿠키 이름(name)
쿠키의 값(value)
쿠키의 만료 시간(Expires)
쿠키를 전송할 도메인 이름(Domain)
쿠키가 어떤 서버로 전송되어져야 하는지를 설정한다.
domain = .jerry.com → jerry.com, www.jerry.com, dev.jerry.com에 쿠키 전달
쿠키를 전송할 경로(Path)
특정 디렉토리에서 쿠키가 사용되도록 한다.
path = /subDir2/ → localhost:8080/subDir2 또는 localhost:8080/subDir2/subDir3 과 같은 경로로 요청시에만 쿠키가 전송
보안 연결 여부(Secure)
HTTPS가 아닌 상황에서 쿠킨 전송 여부 설정
true = HTTPS가 아닌 환경에서 cookie를 전송하지 않는다
false = 기본값, HTTPS가 아닌 환경에서 cookie를 전송한다
HttpOnly(HttpOnly)
브라우저에서 쿠키를 접근여부 설정
true = 브라우저에서 쿠키에 접근할 수 없다
false = 브라우저에서 쿠키에 접근할 수 있다
동작 방식
보안에 취약
만료시간에 따라 브라우저를 종료해도 계속해서 남아 있을 수 있다.
서버 사이드에서 관리
브라우저를 통해 서버에 접속한 이후 브라우저를 종료할 때까지 유지되는 상태
동작 방식
웹 브라우저가 서버에 요청
서버가 해당 웹브라우저에 유일한 ID(Session ID)를 부여함
서버가 응답할 때 HTTP 헤더(Set-Cookie)에 Session ID를 포함하새 전송
Set-Cookie: JSESSIONID=aslkf
브라우저는 이후 브라우저를 닫기까지 다음 요청 때 부여된 Session ID가 담겨있는 쿠키(세션 쿠키)를 HTTP 헤더에 넣어서 전송
Cookie: JSESSIONID=aslkf
서버는 세션 ID를 확인하고 해당 세션에 관련된 정보를 확인한 후 응답
쿠키보다 보안성이 좋다
만료시간을 정할 수는 있으나 브라우저를 종료하면 만료시간 상관 없이 삭제된다