- 통계학
- Django
- 트리
- 쟝고
- stack
- 완전검색
- 그리디
- 스택
- M:N
- create
- update
- Vue
- regexp
- drf
- ORM
- 큐
- migrations
- outer join
- 백트래킹
- distinct
- Tree
- Article & User
- Queue
- SQL
- 이진트리
- 뷰
- N:1
- delete
- DB
- count
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
데이터 분석 기술 블로그
Django에 대하여(20)_쿠키 본문
쿠키(Cookie)
서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각입니다. 클라이언트 측에서 저장되는 작은 데이터 파일이며, 사용자 인증, 추적, 상태 유지 등에 사용되는 데이터 저장 방식입니다.
1. 쿠키 사용 원리
- 브라우저(클라이언트)는 쿠키를 KEY - VALUE의 데이터 형식으로 저장
- 이렇게 쿠키를 저장해 놓았다가, 동일한 서버에 재요청 시 저장된 쿠키를 함께 전송
쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용됩니다. 이를 이용해 사용자의 로그인 상태를 유지할 수 있습니다. 상태가 없는(stateless) HTTP 프로토콜에서 상태 정보를 기억시켜 주기 때문입니다.
2. 쿠키를 이용한 장바구니 예시
장바구니에 상품 담기
개발자 도구 - Network 탭 - cartView.pang 확인
서버는 응답과 함께 Set - Cookie 응답 헤더를 브라우저에게 전송. 이 헤더는 클라이언트에게 쿠키를 저장하라고 전달하는 것입니다.
Cookie 데이터 자세히 확인
메인 페이지 이동 - 장바구니 유지 상태 확인
개발자 도구 - Application 탭 - Cookies
마우스 우측 버튼 - Clear - 새로고침 - 장바구니가 빈 것 확인
3. 쿠키 사용 목적
- 세션 관리 (Session management): 로그인, 아이디 자동완성, 공지 하루 안 보기, 팝업 체크, 장바구니 등의 정보 관리
- 개인화 (Personalization): 사용자 선호, 테마 등의 설정
- 트래킹 (Tracking): 사용자 행동을 기록 및 분석
4. 세션 (Session)
서버 측에서 생성되어 클라이언트와 서버 간의 상태를 유지하는 걸로 상태 정보를 저장하는 데이터 저장 방식 입니다. 쿠키에 세션 데이터를 저장하여 매 요청 시마다 세션 데이터를 함께 보냅니다.
서버 측에서는 세션 데이터를 생성 후 저장하고 세션 ID를 생성합니다. 이 ID를 클라이언트 측으로 전달하여, 클라이언트는 쿠키에 이 ID를 저장합니다.
서버로부터 쿠키를 받아 브라우저에 저장하고, 클라이언트가 같은 서버에 재요청 시마다 저장해 두었던 쿠키도 요청과 함께 전송합니다. 예를 들어 로그인 상태 유지를 위해 로그인 되어있다는 사실을 입증하는 데이터를 매 요청마다 계속해서 보내는 것입니다.
쿠키와 세션의 목적은 서버와 클라이언트 간의 상태를 유지하는 것입니다.
4.1 세션 작동 원리
- 클라이언트가 로그인을 하면 서버가 session 데이터를 생성 후 저장
- 생성된 session 데이터에 인증 할 수 있는 session id를 발급
- 발급한 session id를 클라이언트에게 응답
- 클라이언트는 응답 받은 sessin id를 쿠키에 저장
- 클라이언트가 다시 동일한 서버에 접속하면 요청과 함께 쿠키(session id가 저장된)를 서버에 전달
- 쿠키는 요청 때마다 서버에 함께 전송되므로 서버에서 session id를 확인해 로그인되어 있다는 것을 알도록 함
참고
1. 쿠키 종류별 Lifetime (수명)
2. 세션 in Django
'백엔드' 카테고리의 다른 글
Django에 대하여(22)_Login (0) | 2024.04.13 |
---|---|
Django에 대하여(21)_Authentication System (0) | 2024.04.12 |
Django에 대하여(19)_HTTP (0) | 2024.04.10 |
Django에 대하여(18)_Media files (0) | 2024.04.09 |
Django에 대하여(17)_Static files (0) | 2024.04.08 |