1. JSESSIONID란?
- Tomcat 컨테이너에서 세션을 유지하기 위해 발급하는 키
- HTTP는 stateless하기 떄문에, 새로운 연결이 생성되면 이전 연결은 끊기기 때문에 상태를 유지할 수 없는 문제를 해결하기 위함
2. JSESSIONID의 동작방식
- 브라우저 최초 접근 -> Tomcat: Response 헤더에 JSESSIONID 값 발급
Set-Cookie: JSESSIONID=3CB361E0BE1A9A7DE7DB926DF0772BAE
- 브라우저 재 요청 시 Response를 통해 받은 JSESSIONID를 Request 헤더의 쿠키에 값을 넣어 서버에 요청. 쿠키를 통해 JSESSIONID를 전달 받으면 서버는 새 JSESSIONID를 발급하지 않는다.
- 서버는 클라이언트에게서 전달받은 JSESSIONID를 기준으로 세션 메모리 영역에 상태를 유지할 값들(HttpSession 등)을 저장
3. JSESSIONID 유지범위
- 동일한 Full 도메인 (서브도메인이 다를 경우 쿠키가 유지되지 않음)
- 포트 번호 무관
4. JSESSIONID의 한계
- Tomcat 컨테이너를 2대 이상 사용할 경우 세션 유지 불가.
-> 유지를 위해서 세션 클러스터링 환경을 구축해야함
Cookie
1. Cookie란?
- 클라이언트 소유
- 서버에 Request 보낼 시 자동으로 헤더에 포함되어 전송됨
- 주로 서버의 필요에 의해 클라이언트에 생성하도록 지시 (
Set-Cookie
) ex. JSESSIONID - HttpOnly, Secure 속성은 서버 -> 클라이언트로 전송. 클라이언트 -> 서버는 값을 주지 않음.
=> 디버깅 창에서 Response 속성으로만 확인 가능 - Tomcat 8.5 <=
- httpOnly 기본값=true : JavaScript로 탈취 불가
- secure=true : https로만 전송됨
- 세션 쿠키, 영구적 쿠키
- 세션 쿠키 : 만료시각 X, 메모리 저장, 브라우저 닫으면 삭제됨
- 영구적 쿠키 : 만료시각 O, 파일 저장
참고자료
728x90
728x90