| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- react
- 프론트엔드
- 내일배움카드
- 자바스크립트
- 자료구조
- useRef
- MegabyteSchool
- 비전공자
- 패스트캠퍼스
- JavaScript
- TypeScript
- 코딩테스트
- 입문
- useMemo
- GIT
- 알고리즘
- CSS
- 리액트
- 프로그래머스
- 메가바이트스쿨
- Github
- 모던 자바스크립트 딥 다이브
- 개발 공부
- 개발자취업부트캠프
- 국비지원교육
- styled-components
- 모던 딥 다이브 자바스크립트
- 이벤트
- 공식문서
- next.js
- Today
- Total
개발 기록 남기기✍️
[Web] LocalStorage, SessionStorage, Cookie 본문
🍪 Cookie
쿠키는 웹 페이지 방문 시 방문 기록, 서버 응답 데이터 등의 정보를 담은 임시 파일이다.
쿠키는 key/value 형태의 문자 데이터로 구성되어 있으며, 최대 4KB, 300개까지 데이터 저장이 가능하다.
쿠키는 웹 브라우저를 이용하고 있는 컴퓨터에 저장되며, 브라우저에서 서버에 요청을 보낼 때 브라우저에 해당 서버의 쿠키 정보가 있다면 기본적으로 쿠키를 담아서 요청을 보낸다.
Cookies는 사이트에서 방문한 페이지를 저장하거나 유저의 로그인 정보를 저장하는 등 다양한 방법으로 사용된다.
많은 보안 웹사이트들은 로그인을 한 후 Cookies를 사용해 유저의 신원을 확인하여 모든 페이지에서 재인증을 거치지않아도 되게 된다. Cookies의 또 다른 용도는 사이트에서 제한된 인터넷 사용 기록을 기반으로 사용자 경험을 개선하는 것이다. (예. 하루동안 팝업 보지 않기)
🥠 Cookie의 구성 요소
- Name : 쿠키 이름
- Value : 쿠키의 저장된 값
- Expires : 쿠키 유효기간 설정
- Domain : 쿠키가 사용되는 도메인 지정
- Path : 쿠키를 반환할 경로
- Secure : 보안 연결
- HttpOnly : http 외 다른 통신 사용 가능
- HttpOnly 오로지 http 요청이 있을 경우에만 전송
🥠 Cookie의 종류
🍪 Session cookies
- 만료일을 포함하지 않는다.
- 브라우저나 탭이 열려있는 동안에만 저장된다.
- 브라우저가 닫히면 cookies는 영구적으로 삭제된다.
- 예) 은행 유저들의 자격 증명을 저장하는데 사용
🍪 Persistent cookies
- 만료일을 포함한다.
- 만료일까지 유저의 디스크에 저장되고 만료일이 지나면 삭제된다.
- 예) 이메일 기억하기
🗂️ Web Storage
HTML5 에는 웹의 데이터를 클라이언트에 저장할 수 있는 새로운 자료구조인 Web Storage 스펙이 포함되어 있다.
Web Storage의 개념은 쿠키와 마찬가지로 key/value 쌍으로 데이터를 저장하고 key를 기반으로 데이터를 조회하는 패턴으로, 영구 저장소(LocalStorage)와 임시 저장소(SessionStorage)를 따로 두어 데이터의 지속성을 구분할 수 있어 용도에 맞는 선택이 가능하다.
Web Storage는 기존 웹 환경의 쿠키(Cookie)와 매우 유사한 개념으로 사실 거의 차이가 없지만 몇 가지 쿠키의 단점을 극복하는 개선점이 도입되었다.
💡 Web Storage vs Cookie
✔ 쿠키는 웹 요청시 매번 서버로 전송
✔ 단순 문자열을 넘어(스크립트) 객체 정보를 저장 가능
✔ 용량의 제한이 없음
✔ 영구 데이터 저장이 가능
💡LocalStorage와 SessionStorage
Web Storage는 데이터의 지속성과 관련하여 두 가지 용도의 저장소를 제공한다.
우선 기본적으로 Web Storage는 쿠키와 마찬가지로 사이트의 도메인 단위로 접근이 제한된다. 다시 말해 특정 도메인에서 저장한 데이터는 다른 도메인에서 조회할 수 없다.
📁 LocalStorage
LocalStorage 저장한 데이터를 (명시적으로) 지우지 않는 이상 영구적으로 보관이 가능하다.
앞서 말한대로 도메인마다 별도로 로컬 스토리지가 생성된다.
Windows 전역 객체의 LocalStorage 라는 컬렉션을 통해 저장/조회가 이루어진다.
📁 SessionStorage
SessionStorage는 데이터의 지속성과 액세스 범위에 특수한 제한이 존재한다.
SessionStorage는 windows 전역 객체의 sessionStorage라는 컬렉션을 통해 저장/조회가 이루어진다.
✨ 데이터 유지 측면
SessionStorage는 데이터가 지속적으로 보관되지 않는다.
현재 페이지가 브라우징 되고있는 브라우저 컨텍스트 내에서만 데이터가 유지된다.
LocalStorage는 브라우저를 종료해도 데이터는 보관되어 다음번 접속에도 그 데이터를 사용할 수 있는 반면, SessionStorage는 브라우저가 종료되면 데이터도 같이 지워진다. 즉 브라우저가 종료되면 SessionStorage도 삭제된다.
✨ 데이터 범위 측면
SessionStorage 도메인 별로 별도로 생성된다.
여기에 더불어 SessionStorage는 같은 사이트의 같은 도메인이라 할지라도 브라우저가 다르면 서로 다른 영역이 된다. (브라우저 컨텍스트가 다름)
탭 브라우징이나 브라우저를 하나 더 실행해서 같은 페이지를 실행했을 때, 이 두 페이지의 SessionStorage는 각각 별개의 영역으로 서로 침범하지 못한다.
WebStorage의 보안은 서로 다른 도메인의 데이터 침범을 막고는 있지만 클라이언트, 즉 사용자를 막고 있지는 않다. 클라이언트는 얼마든지 저장된 값을(임의로)수정이 가능하다. (쿠키와 동일)
'Front-End > 기초 지식' 카테고리의 다른 글
| Feature Sliced Design 그게 뭔데.. (0) | 2025.03.01 |
|---|---|
| Polling / Long Polling / Server-Sent Events / WebSocket (0) | 2023.07.20 |
| [HTTP 인증] 쿠키, 세션 그리고 토큰(feat. JWT) (1) | 2023.07.17 |
| [Front-End] SSR과 CSR의 개념(feat. Next.js) (1) | 2023.04.01 |