Django - 쿠키, 세션

Lee Ju-Hyeon(David)·2021년 9월 15일
0

Django

목록 보기
8/10
post-thumbnail

1. HTTP(Hyper Text Transfer Protocal)

  • HTML 문서와 같은 자원,데이터들을 가져올 수 있도록 해주는 프로토콜
  • 웹 상에서의 모든 데이터 교환의 기초

특징

Connextionless

  • 클라이언트에서 요청을 보내면 서버는 이에 응답하고 연결을 끊는다.

Stateless

  • 요청과 응답 이후 접속을 끊기 때문에 상태 정보가 저장되지 않는다.
  • 클라이언트-서버 간의 데이터는 서로 완전히 독립적이다.

위와 같은 특징으로 인해 서버는 같은 사용자가 요청하더라도 새로운 사용자로 인식한다. 이러한 HTTP의 단점을 보완하기 위해서 쿠키와 세션이 존재한다.


2. 쿠키

  • 클라이언트 로컬에 저장되는 key : value 형태의 작은 데이터 파일
  • 동일한 서버에 요청시 쿠키는 클라이언트의 상태 정보를 저장했다가 참조한다.
  • 웹 페이지 접속 시 쿠키를 저장하고, 동일한 서버에 재요청 시 쿠키도 함께 전송한다.
    -> 이를 통해 사용자의 로그인 상태를 유지할 수 있다.

2.1 쿠키의 동작 방식

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

2.2 쿠키의 사용 목적

  • 세션 관리(Session management)
  • 개인화(Personalization)
  • 트래킹(Tracking)

2.3 쿠키 확인

쇼핑몰에서 장바구니에 품목을 담은 뒤에 메인 페이지를 요청하면, 여전히 장바구니가 유지되는 것을 확인할 수 있다. 메인페이지를 요청하는 것은 단순히 메인 페이지를 랜더링 해달라는 요청인데 장바구니가 유지되는 이유는 쿠키를 주고 받기 때문이다.

장바구니 화면에서 개발자도구를 살펴보면 많은 쿠키들을 확인할 수 있는데 이 쿠키들은 서버에서 브라우저가 저장하라고 전달해준 것이다. (이것 또한 프로토콜이다.) 이 중 하나가 장바구니를 유지해주는 쿠키일 것이다.

장바구니 화면에서 쿠키를 삭제하면
장바구니가 비워지는 것을 볼 수 있다. 장바구니의 상태를 유지해주는 쿠키를 삭제했기 때문이다.


3. 세션

  • 쿠키들 중에서도 상태를 유지시키는 것을 세션이라고 한다.
  • 클라이언트가 서버에 접속하면 서버가 세션 ID를 발급하고, 클라이언트는 이를 쿠키에 저장한다.
  • 브라우저 종료시 소멸된다.
  • 세션의 정보는 브라우저가 아닌 서버에 저장된다.
  • 쿠키와 달리 정보가 서버에 저장되기 때문에 보안에 더 강하다.

세션 확인

github에 로그인 한 뒤에 개발자 도구로 확인해 보면 user_session을 확인할 수 있다. 정확하진 않지만, session_id로 유추할 수 있다.

다른 페이지로 이동해서 해당 키가 그대로 유지된다.

이상태에서 user_session을 삭제하면
로그인이 상태가 해제되는 것을 확인할 수 있다.





참조

0개의 댓글