HTTP의 stateless(무상태성)를 보완

서버가 일방적으로 클라이언트에 전달하는 작은 데이터

서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단

기본적으로 클라이언트 브라우저에 저장

해당 도메인에 대해 쿠키가 존재하면, 웹 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달

로그인 상태 유지, 장바구니 정보 등


쿠키 전달 방법

서버의 응답헤더

  • Set-Cookie: UserId=kimcoding path=/ Expire=..
  • Set-Cookie: email=..path/Expire=/…

클라이언트는 매 요청시마다 자동으로 쿠키 포함

  • Cookie: UserId=kimcoding
  • Cookie:email=…

쿠키 옵션

'Set-Cookie':[
            'cookie=yummy',
            'Secure=Secure; Secure',
            'HttpOnly=HttpOnly; HttpOnly',
            'Path=Path; Path=/cookie',
            'Doamin=Domain; Domain=codestates.com'
        ]
  1. Domain - 서버와 요청의 도메인이 일치하는 경우 쿠키 전송
  2. Path - 서버와 요청의 세부경로가 일치하는 경우 쿠키 전송
    • 설정된 경로를 포함하는 하위 경로로 요청 시 서버에 쿠키 전송 가능
  3. MaxAge or Expires - 쿠키의 유효기간 설정
    • MaxAge - 초 단위로 설정
    • Expires - 유효 날짜 지정
    • 세션 쿠키 - MaxAge 또는 Expires 옵션이 없는 쿠키, 브라우저가 실행 중일 때 사용할 수 있는 임시 쿠키, 브라우저 종료 시 삭제
    • 영속성 쿠키 - MaxAge or Expires에 따른 쿠키
  4. HttpOnly - 스크립트의 쿠키 접근 가능 여부 결정
    • <script> 태그로 접근 가능 -> XSS 공격에 취약
    • 개인정보, 민감한 정보는 회피
    • true 시 JS로 쿠키 접근 불가
    • 기본 false, document.cookie로 접근 가능
  5. Secure - HTTPS 프로토콜에서만 쿠키 전송 여부 결정
    • true 시 HTTPS일 때만 쿠키 전송
  6. SameSite - CORS 요청의 경우 옵션 및 메서드에 따라 쿠키 전송 여부 결정
    • 옵션에 따른 선버의 쿠키 전송 여부
      • Lex - GET 메서드 요청만 쿠키 전송 가능
      • Strict - 쿠키 전송 불가, same-site인 경우만 쿠키 전송 가능(서버의 도메인, 프로토콜, 포트가 같은 경우)
      • None - 모든 메서드 요청에 쿠키 전송 가능, HTTPS 프로토콜과 Secure 쿠키 옵션 필요

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie


기능 구현하기

cookie 기능 구현



카테고리:

태그:

업데이트:

댓글남기기