본문 바로가기
Web

쿠키와 세션

by 밍상 2021. 11. 19.

HTTP 프로토콜은 상태 유지가 되지 않는 Stateless한 프로토콜입니다. 왜?

그러므로 클라이언트와 서버간 통신을 계속하기 위해서 상태를 저장하기 위해 쿠키와 세션을 사용하게 됩니다.

 

쿠키

  • 클라이언트 단에 저장되는 작은 정보의 단위
  • 저장된 정보를 다른 사람 또는 시스템이 쉽게 볼 수 있는 단점
  • 유효시간이 지나면 사라짐
  • 클라이언트에서 생성하고 저장될 수 있꼬, 서버단에서 전송한 쿠키가 클라이언트에 저장될 수 있다.
  • 이름과 값으로 구성된 자료를 저장(외에도 주석, 경로, 유효기간, 버전, 도메인과 같은 정보 저장)

쿠키의 동작 방식

  1. 클라이언트가 페이지 요청
  2. 서버에서 쿠키 생성
  3. HTTP 헤더에 쿠키를 포함시켜 응답
  4. 브라우저가 종료되어도 쿠키 만료 기간이 남아 있다면 클라이언트에서 보관하고 있음
  5. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
  6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답

 

쿠키의 조건

  • 하나의 쿠키는 4K Byte 크기로 제한
  • 브라우저는 각각의 웹사이트당 20개의 쿠키를 허용
  • 모든 웹 사이트를 합쳐서 최대 300개를 허용

쿠키의 예시

  • 사이트에 로그인 시, "아이디와 비밀번호를 저장하시겠습니까?"
  • 쇼핑몰의 장바구니 기능
  • 자동로그인, 팝업에서 "오늘 더 이상 이 창을 보지 않음" 체크, 쇼핑몰의 장바구니

세션

  • 클라이언트 별로 서버에 저장되는 정보
  • 서버 종료 or 유효시간 종료시 사라짐

세션 이용 방법

  1. 웹 클라이언트가 서버측에 요청을 보내게 되면 서버는 클라이언트를 식별하는 session id를 생성
  2. 서버는 session id를 이요해서 key와 value를 이용한 저장소인 HttpSession 생성
  3. 서버는 session id를 저장하고 있는 쿠키를 생성하여 클라이언트에게 전송
  4. 클라이언트는 서버측에 요청을 보낼때 session id를 가지고 있는 쿠키를 전송
  5. 서버는 쿠키에 있는 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