브라우저마다 세션 값이 겹치지 않는 이유
- 브라우저 별로 별도의 쿠키를 관리
HTTP의 경우 클라이언트가 서버를 호출(url에 따라 특정 페이지를 호출)하고 연결이 끊어짐
그 후 클라이언트가 다른 페이지로 넘어갈 때 서버는 클라이언트 구분을 하지 못함
그래서 클라이언트가 서버를 호출할 경우 톰캣에서 JSESSIONID 쿠키를 클라이언트에게 발급해주고
이 값으로 세션을 유지
JSESSIONID란?
톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키
HTTP 프로토콜은 stateless하다. 요청시마다 새로운 연결이 생성되고 응답후 연결은
끊기게 되므로 상태를 유지할 수 없다.
따라서, 상태를 저장하기 위해서 톰캣은 JSESSIONID 쿠키를 클라이언트에게 발급해주
고 이 값을 통해 세션을 유지할 수 있도록 한다.
동작방식에 대해서
1. 브라우저에 최초 접근시 톰캣은 Response 헤더에 다음과 같이 JSESSIONID값이 발급
된다.
Set-Cookie: JSESSIONID=3CB361E0BE1A9A7DE7DB926DF0772BAE
2. 브라우저 재요청시 Response를 통해 받은 JSESSIONID를 Request 헤더의 쿠키에 값
을 넣어 서버에 요청한다. 쿠키를 통해 JSESSIONID값을 전달받게 되면 서버는 새로운 J
SESSIONID 값을 Response 헤더에 발급하지 않는다.
3. 클라이언트로부터 전달받은 JSESSIONID값을 기준으로 서버에서는 세션 메모리 영역
에 상태를 유지할 값들을 저장할 수 있게 된다. (HttpSession 등)
한계
톰캣 컨테이너를 2대 이상 사용하게 될 경우 세션을 유지할 수 없다. 유지가 되기 위
해서는 세션 클러스터링 환경을 구축하여야 한다.
JSESSIONID는 서블릿 컨테이너가 있는 웹 서버에 접속한 여러 사용자 각각의 세션 공간을 관리하기 위해 만들어진 일종의 키 값
'지식' 카테고리의 다른 글
[지식] Content-Type Header (0) | 2021.12.30 |
---|---|
[지식] spring controller에서 sesstion 값 사용 (0) | 2021.12.26 |
[지식] 프로그래밍 언어론 (0) | 2021.11.23 |
[지식] 웹과 앱의 차이점 (0) | 2021.09.25 |
[지식] 쿠키와 세션 (0) | 2021.09.23 |