HTTP 프로토콜은 상태 유지가 되지 않는 Stateless한 프로토콜입니다. 왜?
그러므로 클라이언트와 서버간 통신을 계속하기 위해서 상태를 저장하기 위해 쿠키와 세션을 사용하게 됩니다.
쿠키
- 클라이언트 단에 저장되는 작은 정보의 단위
- 저장된 정보를 다른 사람 또는 시스템이 쉽게 볼 수 있는 단점
- 유효시간이 지나면 사라짐
- 클라이언트에서 생성하고 저장될 수 있꼬, 서버단에서 전송한 쿠키가 클라이언트에 저장될 수 있다.
- 이름과 값으로 구성된 자료를 저장(외에도 주석, 경로, 유효기간, 버전, 도메인과 같은 정보 저장)
쿠키의 동작 방식
- 클라이언트가 페이지 요청
- 서버에서 쿠키 생성
- HTTP 헤더에 쿠키를 포함시켜 응답
- 브라우저가 종료되어도 쿠키 만료 기간이 남아 있다면 클라이언트에서 보관하고 있음
- 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
- 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답
쿠키의 조건
- 하나의 쿠키는 4K Byte 크기로 제한
- 브라우저는 각각의 웹사이트당 20개의 쿠키를 허용
- 모든 웹 사이트를 합쳐서 최대 300개를 허용
쿠키의 예시
- 사이트에 로그인 시, "아이디와 비밀번호를 저장하시겠습니까?"
- 쇼핑몰의 장바구니 기능
- 자동로그인, 팝업에서 "오늘 더 이상 이 창을 보지 않음" 체크, 쇼핑몰의 장바구니
세션
- 클라이언트 별로 서버에 저장되는 정보
- 서버 종료 or 유효시간 종료시 사라짐
세션 이용 방법
- 웹 클라이언트가 서버측에 요청을 보내게 되면 서버는 클라이언트를 식별하는 session id를 생성
- 서버는 session id를 이요해서 key와 value를 이용한 저장소인 HttpSession 생성
- 서버는 session id를 저장하고 있는 쿠키를 생성하여 클라이언트에게 전송
- 클라이언트는 서버측에 요청을 보낼때 session id를 가지고 있는 쿠키를 전송
- 서버는 쿠키에 있는 session id를 이용해서 그 전 요청에서 생성한 HttpSession을 찾고 사용한다.
쿠키와 세션의 차이점
- 비슷한 역할이지만 저장되는 위치가 다름
- 보안 : 세션 > 쿠키 , 요청 속도 : 세션 < 쿠키(세션은 서버의 처리가 필요하기 때문)
- 브라우저 종료시 세션 삭제
참고
https://www.boostcourse.org/web326/joinLectures/28762
'Web' 카테고리의 다른 글
MicroService란? (0) | 2022.05.26 |
---|---|
HTTP 2.0 (0) | 2021.11.19 |
Rest API (0) | 2021.08.02 |
Expression Language (0) | 2021.07.28 |
JSTL (0) | 2021.07.20 |