Network

[Network] Cookie

DH_0518 2024. 10. 7. 01:09

 쿠키(cookie)는 서버가 사용자의 웹 브라우저에 'Key:Value' 형태로 전송하는 작은 데이터 조각으로, 브라우저는 이런 문자열 데이터 조각들을 저장해두었다가 동일한 서버로의 request마다 쿠키 데이터를 전송한다.

 따라서 HTTP 서버는 기본적으로 무상태(stateless)이기 때문에 상태를 보존할 수 없지만, 쿠키를 통해서 기존의 정보를 그대로 이용할 수 있다는 뜻이다.

 

 

 

 

 

 

Cookie의 목적

 

 

 HTTP 서버는 무상태를 통해 서버 설계를 간편하게 하고 동시에 수천 개의 TCP 연결을 다룰 수 있는 고성능의 웹 서버를 개발할 수 있다. 그런데 우리는 종종 웹 사이트가 사용자를 확인하는 것이 바람직할 때가 존재하기 때문에 쿠키를 사용해야만 할 때가 있다. 그중 가장 많이 사용하는 목적은 다음과 같다

  • 개인화: 사용자에 따라 다른 콘텐츠를 제공하거나 사용자의 이전 기록을 저장해둘 때 (ex. 웹사이트에 설정한 언어, 테마, 관심사 등)
  • 세션 관리: 로그인 상태, 장바구니 정보 등의 세션 정보를 유지할 때
  • 추천 및 분석: 사용자의 행동을 기록하고 분석하여 마케팅에 사용하기 위해 (ex. 분석데이터 수집, 리타게팅 광고)

이외에도 서버가 사용자의 접속을 제한하거나 기기 식별 등의 이유로도 사용된다

 

 

 

 

 

 

Cookie 관리

 

 

그렇다면 쿠키 설정을 서버에서 해주는 것이므로 서버에서 관리하는걸까? 그렇지 않다. 쿠키는 전적으로 웹 브라우저가 관리한다. 이는 쿠키가 웹 브라우저에 종속되어있단 뜻이므로, Chrome이나 Edge, Whale 등 서로 다른 브라우저에서는 같은 쿠키 값이더라도 다른 쿠키라는 뜻이다.

  • 쿠키는 웹 브라우저에서 관리한다 (웹 브라우저에 종속되어있다)
  • 웹 사이트 도메인, 혹은 페이지 경로에 종속되게 저장할 수 있다 (ex. 서버에서 path=/home에 쿠키를 저장했다면 /test에서는 사용할 수 없다)
  • 브라우저에서 직접 쿠키를 확인하거나 삭제할 수 있다 (ex. 크롬의 경우 개발자 모드 -> application 탭 -> cookies에서 관리 가능)

 

 

 

 

 

Cookie의 생성 및 사용

 

 

 

쿠키 기술에는 'HTTP 응답 메시지 쿠키 헤더 라인', 'HTTP 요청 메시지 쿠키 헤더 라인', '브라우저의 쿠키 파일', '백엔드 서버' 와 같은 총 네 개의 요소로 이루어져있다. 생성 및 사용 과정을 'Amazon'에 접속한 유저를 통해 알아보자.

 

  1. 과거에 이미 'eBay'에 방문한 적 있던 유저가(이미 eBay의 식별 번호가 쿠키에 저장되어있음) 'Amazon'에 처음으로 접속한다
  2. 'Amazon' 클라이언트에서 서버로 request를 보낸다
  3. 'Amazon' 서버에서는 유저에 대한 고유한 값(식별 번호)을 생성하여 쿠키에 저장한다
    이때 서버에서는 response의 'Set-cookie' 라는 헤더를 사용하여 쿠키에 원하는 데이터를 저장할 수 있다
  4. 이제 client에서는 'Amazon' 서버에 request를 보낼 때마다 'cookie' 헤더에 식별 번호를 저장해서 보내게 된다.
    물론 여기서 서버로 보내는 식별번호는 'eBay' 식별 번호가 아니라 'Amazon' 식별 번호이다

 

컴퓨터 네트워킹 하향식 접근 그림 2.10

 

 

Response의 Set-Cookie 헤더
Request의 Cookie 헤더

 

 

 

 

 

 

 

 

 

 

 

 

Reference

 

[HTTP] Cookie 기본 개념

Cookie 쿠키(영어: cookie)란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되

pygmalion0220.tistory.com

 

🌐 웹 브라우저의 Cookie 헤더 다루기

웹 브라우저의 Cookie 란? 웹브라우저에서 쿠키(Cookie)란 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각으로, key=value 형식의 문자열 데이터 묶음이다. 브라우저는 이 문자열 데이터 조

inpa.tistory.com