dev_note/TIL
Session과 Cookie
jjoylee
2021. 10. 30. 02:47
클라이언트가 서버에 요청하면 응답을 보낸 후 연결을 끊고, 주고받은 데이터나 상태정보를 저장하지 않는다. 그러나 정보를 유지해야 할 필요가 있을 때가 있다.(로그인 등등) 이를 위해 쿠키와 세션을 이용한다.
세션
클라이언트와 웹서버 간 네트워크 연결이 지속되고 있는 상태를 의미한다.
1. 클라이언트가 서버에 접근하면 클라이언트에게 Response의 set-cookie 값으로 sessionId를 발행한다.
2. sessionId는 서버와 클라이언트 메모리에 저장된다 (JSESSIONID).
3. 클라이언트는 다시 접속시 요청에 JSESSIONID 쿠키를 사용해서 세션ID를 서버에 전달한다.
쿠키
클라이언트 상태정보를 담은 파일로 클라이언트의 메모리에 저장한다.
1. 클라이언트가 서버에 접속하면 서버는 쿠키를 생성하고 이를 클라이언트에 전달한다.
2. 클라이언트는 쿠키를 가지고 있다가 다음에 서버에 요청할 때 쿠키를 헤더에 추가해 함께 전송한다.
쿠키는 로컬에 저장되기 때문에 세션보다 속도가 빠르다는 장점이 있지만 보안에는 세션보다 취약하다는 단점이 있다. 그리고 세션이 보안에는 좋기는 하지만 서버의 메모리를 사용하는 것이기 때문에 쿠키와 세션을 상황에 따라 적절하게 사용해야 한다.