쿠키와는 다르게, 유저 정보를 클라이언트가 갖고있는 것이 아닌 서버에 session DB 안에 보관한다
클라이언트가 요청을 하면, 세션 키를 쿠키에 넣어서 전달하고 세션 키를 이용하여 서버에서 데이터를 가져온다
Session 특징
- 쿠키보다 더 안전하게 개인정보를 보관할 수 있음
- 서버에서 세션 객체를 생성하여, 요청받은 각 클라이언트 별로 고유한 세션 ID를 부여함
- 브라우저가 종료되기 전까지 클라이언트의 요청을 유지함
- 저장 용량의 제한이 없음
Session 동작 프로세스
![](https://velog.velcdn.com/images/asylee02/post/9efa1a28-ed4e-42b1-931d-805d4373b55d/image.png)
- 사용자가 웹 사이트에서 ID, Password를 입력하여, 서버에 로그인 요청을 보냄
- 서버는 DB를 확인하여 일치한다면 세션 객체를 생성하고 세션 ID를 부여한 뒤, 서버 메모리에 저장
- 로그인 요청의 응답으로 쿠키에서 세션 ID를 담아 사용자에게 전달
- 사용자가 요청을 할 때, SessionId를 쿠키에 담아 요청을 보냄
- 서버에서 로그인 정보를 확인하는 것 아닌, **Session ID를** 통해 확인함
- Session ID가 유효하다면 해당 요청의 응답을 사용자에게 보냄
Session의 단점
- 사용자가 많을수록 서버의 메모리를 많이 차지하게 됨
- 동시 접속자의 수가 많은 웹사이트의 경우에 서버 과부하가 걸릴 수 있음
- CORS에러를 신경써야함
Session 과 Cookie 비교
| Cookie | Session |
---|
저장 위치 | 클라이언트 | 서버 |
요청 & 응답 | 요청시, 헤더에 Cookie를 담고 전송함 | 요청시, SessionID를 Cookie에 담고 전송함 |
만료시점 | 서버에서 지정한 만료시간이 지나면 삭제 | 브라우저 종료시 or 서버에서 지정한 만료시간 지나면 삭제 |
저장방식 | Text 를 보내면 Text 형태로 저장 | Object를 보내면 서버에서 세션 객체의 형태로 저장 |