안녕하세요
오늘은 세션과 쿠키에 대해 알아보겠습니다.
개발자라면 너무나 익숙하고 개발자가 아니어도 세션과 쿠키에 대해서 많이 들어보셨을 텐데요
세션과 쿠키를 알아보기 전에 먼저 HTTP의 특징을 알아야 합니다.
HTTP의 특징
가장 큰 특징은 Connectionless, stateless인데요.
클라이언트에서 서버로 request를 보내면 해당 서버는 클라이언트로 response를 보낸 다음 서로 독립된 상태를 유지한다는 겁니다.
- Connectionless : 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어 버리는 특징
- Stateless : 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태를 유지하지 않는 특징
바로 이 한계를 보완하기 위해 나온 것이 세션과 쿠키입니다.
공통점
클라이언트와 서버의 연결을 유지한다는 공통점이 있습니다.
즉 클라이언트와 서버의 요청과 응답에 과정이 끝나면 서로 독립된 상태를 유지하는데 그 연결상태를 유지하기 위해 사용합니다.
세션(Session)
클라이언트를 구분하는 수단으로
첫 접속 시 서버는 클라이언트로 sessionId를 부여합니다. 클라이언트는 쿠키에 sessionId를 저장하고
추후에 두번째 접속부터는 해당 sessionId를 통해 사용자를 구분합니다.
사용자의 데이터를 서버 측에서 관리
특징
1. 브라우저가 닫히면 세션은 끊깁니다.
2. 서버에 데이터를 저장해 사용자가 많을 시 부하가 생깁니다.
사용예
- 로그인 시 사용자 유지를 위해 사용
쿠키(Cookie)
클라이언트에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다.
특징
1. 브라우저가 닫혀도 데이터는 유지됩니다.
2. 사용자의 브라우저의 텍스트 형태로 저장됩니다.
사용예
- 쇼핑몰의 장바구니
- 아이디 저장
- 팝업에서 "오늘 하루 이 창을 보지 않음"
세션은 사용자의 수 만큼 서버 메모리를 차지하기 때문에,
최근에는 이런 문제들을 보완한 토큰 기반의 인증방식을 사용하는 추세입니다.
그 중 JWT(JSON Web Token)라는 것이 있습니다.
감사합니다.