쿠키(Cookie)와 웹 스토리지(Web Storage)

2025. 3. 17. 17:53·Web/Javascript
반응형

쿠키(Cookie)

브라우저에 저장되는 작은 크기의 문자열이다. 쿠키를 활용하여 HTTP 통신의 무상태 프로토콜(Stateless) 특성을 보완할 수 있다. 하지만, 쿠키에 모든 상태정보를 저장하는 것은 보안에 취약하고 용량의 한계가 있어 대부분 상태정보는 서버 측 세션에 저장하고, 해당 세션 ID를 쿠키에 저장하여 사용한다.

 

특징

  • 도메인 단위로 데이터를 공유
  • 도메인마다 저장할 수 있는 쿠키의 개수는 20개(브라우저에 따라 다름)
  • 쿠키의 데이터 크기는 약 4KB로 제한
  • 만료시간 설정 가능
  • HTTP 요청 시 자동으로 요청 헤더에 Cookie에 값을 포함하여 전달

 

읽기

document.cookie에 name=value 형태로 저장되고, 각 값은 ;(세미콜론)으로 구분된다.

 

쓰기

  • 클라이언트에서 document.cookie에 값을 할당
document.cookie = "key=value" // 해당 key 값만 갱신
  • HTTP 응답 시 응답 헤더에 Set-Cookie에 값이 포함된 경우 브라우저에 저장

 

옵션

  • path
    • 설정 시 지정된 URL의 경로 및 하위 경로의 페이지만 쿠키에 접근할 수 있다.
    • 기본 값(미지정)은 현재 경로이고, 값은 절대 경로이어야 한다.
  • domain
    • 설정 시 쿠키에 접근 가능한 도메인을 지정할 수 있다.(서브 도메인도 공유 가능)
  • expires / max-age
    • expires는 유효 일자(GMT 포맷), max-age는 만료 기간(초)을 지정할 수 있다.(영구 쿠키)
    • 미지정된 쿠키 값은 브라우저 종료 시 삭제된다.(세션 쿠키)
    • max-age는 음수 값 설정 시 삭제된다.
  • secure
    • 설정 시 HTTPS 통신에서만 쿠키가 전송된다.
    • 기본 설정은 프로토콜을 따지지 않는다.
  • samesite
    • 크로스 사이트 요청 위조(XSRF) 공격을 막기위한 옵션
    • Lax, Strict 설정 시 동일한 사이트에서만 쿠키를 전달할 수 있게 설정
  • httpOnly
    • 스크립트가 쿠키를 사용할수 없게 하는 옵션
    • document.cookie를 사용하여 조회 및 조작할 수 없음

 

웹 스토리지(Web Storage)

브라우저 내에 key-value 문자열 쌍을 저장할 수 있게 해주는 객체로 HTML5 부터 추가 되었다. localStorage와 sessionStorage가 두 종류가 있다.

 

웹 스토리지 객체

  • setItem(key, value) - 저장
  • getItem(key) - 조회
  • removeItem(key) - 해당 key-value 삭제
  • clear() - 모든 key-value 삭제
  • key(index) - 인덱스(index)에 해당하는 키 조회
  • length - 저장된 항목의 개수

 

특징

  • 대부분의 브라우저에서 최소 5MB 이상 저장 가능
  • 쿠키와 달리 HTTP 헤더를 통한 조작 불가
  • 프로토콜, 도메인, 포트로 정의된 origin에 분류되어, 셋 중 하나라도 다른 경우 접근할 수 없다.

 

Local Storage

  • origin이 동일한 경우 브라우저 내 모든 탭, 창에서 값 공유
  • 새로고침 시 데이터 보존
  • 종료 시 데이터 보존

 

Session Storage

  • 브라우저 내 현재 탭과 내부 iframe에서 값 공유
  • 새로고침 시 데이터 보존
  • 종료 시 데이터 삭제

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Web > Javascript' 카테고리의 다른 글

비동기 프로그래밍 - Callback, Promise, async/await  (0) 2025.03.18
함수 바인딩 call, apply, bind  (1) 2025.03.06
Turborepo 모노레포 적용하기  (1) 2025.01.08
<span>,<div>에 focus 적용  (0) 2024.12.19
디바운싱(debouncing) / 쓰로틀링(throttling)  (0) 2024.11.14
'Web/Javascript' 카테고리의 다른 글
  • 비동기 프로그래밍 - Callback, Promise, async/await
  • 함수 바인딩 call, apply, bind
  • Turborepo 모노레포 적용하기
  • <span>,<div>에 focus 적용
helperwoo
helperwoo
\ೕ( ・ㅂ・)و /
  • helperwoo
    WooLog
    helperwoo
  • 전체
    오늘
    어제
    • All (55)
      • Web (25)
        • PHP (6)
        • Java (5)
        • Javascript (8)
        • Laravel (2)
        • Spring Boot (0)
        • React.js (1)
        • Electron.js (1)
        • Vue.js (1)
        • Nest.js (1)
      • Mobile (2)
        • Flutter (2)
      • SQL (1)
        • MySQL (4)
      • Docker (6)
      • Server (7)
      • Git (2)
      • Tool (3)
      • AI (2)
      • Tip (3)
      • Log (0)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      ignorecase
      nginx
      apache
      코드
      CTE
      ollama
      DB연동
      http
      flutter
      엘리스
      JavaScript
      frankenphp
      알고리즘
      websocket
      CLI
      vscode
      deepseek
      php
      dart
      챌린지
      with
      Laravel
      image
      MYSQL
      Compose
      recursive
      docker
      git
      데이터베이스
      프로그래머스
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    helperwoo
    쿠키(Cookie)와 웹 스토리지(Web Storage)
    상단으로

    티스토리툴바