Cookies
Web/공통2022. 9. 8. 00:49
HTTP Cookies
- 로그인과 로그아웃을 이해하기 전 반드시 알아야하는 HTTP Cookies에 대해 먼저 알아보기
1. HTTP
- Hyper Text Transfer Protocol
- HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜(규칙, 규약)
- 웹에서 이루어지는 모든 데이터 교환의 기초
- 클라이언트 - 서버 프로토콜이라고도 부름
1-1. 요청과 응답
- 요청 (requests)
- 클라이언트(브라우저)에 의해 전송되는 메시지
- 응답 (response)
- 서버에서 응답으로 전송되는 메시지
1-2. HTTP 특징
- 비 연결 지향(connetionless)
- 서버는 요청에 대한 응답을 보낸 후 연결을 끊음
- 예를 들어 우리가 네이버 메인 페이지를 보고 있을 때 우리는 네이버 서버와 연결되어 있는 것이 아님
- 네이버 서버는 우리에게 메인 페이지를 응답하고 연결을 끊은 것
- 서버는 요청에 대한 응답을 보낸 후 연결을 끊음
- 무상태(stateless)
- 연결을 끊는 순간 클라이언트와 서버 간의 통신이 끝나며 상태 정보가 유지되지 않음
- 클라이언트와 서버가 주고받는 메시지들은 완전히 독립적
1-3. 어떻게 로그인 상태를 유지할까?
- 그런에 우리가 로그인을 하고 웹 사이트를 사용할 때 페이지를 이동해도 로그인 **‘상태’**가 유지됨
- 서버와 클라이언트 간 지속적인 상태 유지를 위해 **“쿠키와 세션”**이 존재
2. 쿠키(Cookie)
2-0. 쿠키 개요
- HTTP 쿠키는 상태가 있는 세션을 만들도록 해 줌
- 상태가 있는 세션?
- 쿠키는 세션을 포함하고 있는 큰 개념이다.
- 쿠키의 여러 역할이 있다.
- 그 중 상태를 유지시켜주는 쿠키를 세션(세션 쿠키)라고 한다.
2-1. 쿠키 개념
- 쿠키는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다.
- 쿠키는 사용자가 웹사이트를 방문할 경우 해당 웹사이트의 서버를 통해 사용자의 컴퓨터(브라우저)에 설치되는 작은 기록 정보 파일이다.
- 브라우저(클라이언트)는 쿠키를 로컬에 KEY-VALUE의 데이터 형식으로 저장한다.
- 이렇게 쿠키를 저장해 놓았다가, 동일한 서버에 재요청 시 저장된 쿠키를 함께 전송한다.
- 쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용된다.
- 이를 이용해 사용자의 로그인 상태를 유지할 수 있다.
- EX) 매 요청마다 **‘나 로그인 된 사용자다’**는 메시지를 담은 쿠키를 보내어 로그인 상태를 유지
- 상태가 없는(stateless) HTTP 프로토콜에서 상태 정보를 기억 시켜 주기 때문
- 이를 이용해 사용자의 로그인 상태를 유지할 수 있다.
- 즉, 웹 페이지에 접속하면 웹 페이지를 응답한 서버로부터 쿠키를 받아 브라우저에 저장하고, 클라이언트가 같은 서버에 재요청 시마다 요청과 함께 저장해 두었던 쿠기도 함께 전송한다.
2-2. 웹 - 서버 연결
- 브라우저가 서버에게 웹 페이지를 요청한다.
- 서버가 브라우저에게 해당 페이지와 쿠키를 보낸다.
- 반복
2-3. 쿠키 사용 목적
- 세션 관리 (Session management)
- 로그인, 아이디 자동완성, 공지 하루 안 보기, 팝업 체크, 장바구니 등의 정보 관리
- 개인화 (Personalization)
- 사용자 선호, 테마 등의 설정
- 트래킹 (Tracking)
- 사용자 행동을 기록 및 분석
2-4. 세션 (Session)
- 세션?
- 사이트와 특정 브라우저 사이의 ‘state(상태)’를 유지시키는 것
- 클라이언트가 서버에 접속하면 서버가 특정 session id를 발급하고, 클라이언트는 session id를 쿠키에 저장
- 클라이언트가 다시 동일한 서버에 접속하면 요청과 함께 쿠키(session id가 저장된)를 서버에 전달
- 쿠키는 요청 때마자 서버에 함께 전송 되므로 서버에서 session id를 확인해 알맞은 로직을 처리
- session id는 세션을 구별하기 위해 필요하며, 쿠키에는 session id만 저장
- why?
- 브라우저가 로그인 상태등 핵심 정보를 들고 있으면 불안하므로 쿠키에는 session id만 저장
- 핵심정보는 서버가 저장
2-5. 쿠키의 Lifetime (수명)
- Session cookie
- 현재 세션(current session)이 종료되면 삭제됨
- 브라우저 종료와 함께 세션이 삭제됨
- Persistent cookies
- Expires 속성에 지정된 날짜 혹은 Max-Age 속성에 지정된 기간이 지나면 삭제됨
'Web > 공통' 카테고리의 다른 글
[Openvidu] openvidu-react 함수형 컴포넌트 (0) | 2023.05.24 |
---|---|
[REFACTORING] 리팩토링의 정의와 사용하는 이유 (0) | 2023.05.23 |
[API] 드림코딩 - API 개념 정리 및 유용한 사이트들 (2) | 2022.08.20 |
댓글()