1) 개념: 일정 시간 동안 같은 브라우저로 들어오는 요청을 하나의 상태로 보고, 그 상태를 유지하는 것
2) 특징
3) 작동 방식
(1) Client → Server
클라이언트가 처음으로 서버에게 request 전송
(첫 request이므로 session id 존재하지 않음)
(2) Server → Client
서버가 session id가 없음을 확인하고 새로 발급하여 응답
(3) Client → Server
HTTP 헤더에 session id 포함시켜 응답
(4) Server
서버는 session id를 통해 사용자 식별
(5) 클라이언트 종료 시 session id 제거, 서버에서도 session 제거
4) 사용 예시
- 로그인
1) 구성 요소
2) 특징
- 브라우저가 값을 저장
- 장점: 서버가 저장하는 것이 아니기 때문에 서버 부하가 덜함
- 단점: 세션에 비해 보안 취약
3) 작동 방식
(1) Client → Server
클라이언트가 서버에 처음으로 Request 전송
(2) Server
서버에서 쿠키 생성
(3) Server → Client
HTTP 헤더에 쿠키 포함시켜 응답
(4) Client
브라우저 종료되어도 쿠키 만료 기간 지나지 않았다면 클라이언트에서 보관
(5) Client → Server
같은 요청 하는 경우 HTTP 헤더에 쿠키 함께 보냄
(6) Server → Client
서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요 있을 때 쿠키 업데이트 하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답
4) 사용 예시
- 쇼핑몰 장바구니 기능
- "아이디와 비밀번호를 저장하시겠습니까?"
- "오늘 더 이상 이 창을 보지 않음"
다음에 이어 설명할 OAuth, JWT에 비해 구현이 간단하나, 보안에 상대적으로 취약함