forked from codesquad-members-2021/java-was
-
Notifications
You must be signed in to change notification settings - Fork 0
Cookie & Session
JiSun Lim edited this page Apr 2, 2021
·
8 revisions
리퀘스트와 리스폰스에 쿠키 정보를 추가해서 클라이언트의 상태를 파악하기 위한 시스템
- HTTP는 기본적으로 상태를 유지하지 않는 stateless 프로토콜이다.
- But, 로그인 등 상태를 유지해야 하는 상황이 존재한다.
- stateless 프로토콜을 이용하면서 상태를 유지하는 방법은 없을까?
- 이럴 때 사용하라고 만든 게 쿠키다.
- 클라이언트에서 서버에 리퀘스트를 보낸다.
- 서버에서 리스폰스 헤더의 Set-Cookie라는 필드에 세션 아이디를 담아 보낸다.
- 클라이언트는 쿠키를 보존하고 있다가, 같은 서버로 리퀘스트를 보낼 때 쿠키 값을 넣어 보낸다.
- 서버는 쿠키를 확인하여 어떤 클라이언트가 접속했는지 확인하고, 이전 상태를 파악할 수 있다.
- 리스폰스: Set-Cookie : 상태 관리 개시를 위한 쿠키 정보
- 리퀘스트: Cookie : 서버에서 수신한 쿠키 정보
@janeljs 그럼 한가지 더, 왜 세션 ID 키 값은 spring-session 도 아니고 java-session 도 아니고 jsessionid 가 됐을까요? 원래라면 세션 아이디를 발급하고 관리하는 책임은 누가 지는지, 또 왜 그렇게 됐는지, 잠재적인 장애 유발 요인은 어디에 있을지도 고민해 주세요.
톰캣의 경우 JSESSIONID 라는 쿠키가 있는데 이것이 세션을 유지시켜주는 역할을 한다.
JSESSIONID:톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키 → 서블릿 컨테이너가 있는 웹서버에 접속한 여러 사용자 각각의 세션 공간을 관리하기 위해 만들어짐