Web Storage & Cookie

🍉effy·2022년 4월 13일
0
post-thumbnail

세션, 쿠키를 왜 사용하는가?

  • 우선 그 전에 HTTP 프로토콜을 짚고 넘어가자.

HTTP 프로토콜

  • 비연결지향 : 클라이언트가 서버에게 Request 를 보내고 서버가 클라이언트에게 Response 를 보내면 접속 종료
  • 무상태 (stateless) : 데이터를 주고 받기 위한 각각의 데이터 요청이 독립적으로 관리, 즉 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다

  • HTTP 프로토콜의 stateless 적 특징, 단점을 해결하기 위해 데이터 저장에 사용되는 것이 바로 쿠키, 세션이다.

쿠키

  • 쿠키는 클라이언트 로컬에 저장되는 키와 값 형태의 작은 파일
  • 이름, 값, 만료기간, 경로 정보가 들어있다
  • 클라이언트의 브라우저 메모리 or 하드디스크에 저장이 된다
  • 매번 서버에 전송되므로 크기가 클 경우, 서버에 부담이 갈 수 있다
  • CSRF 취약 (SameSite 옵션이 Strict 가 아닐 경우, 다른 도메인에서 요청할 때도 자동 전송되는 위험성이 있다)
  • 대략 4KB 까지의 데이터를 저장할 수 있고 유효기간이 존재
  • 대부분의 브라우저가 지원

쿠키는 언제 사용할까

  • 세션 관리 : 서버에 저장해야 할 로그인, 장바구니, 게임 스코어 등의 정보 관리
  • 사용자 맞춤 : 사용자가 선호하는 옵션이나 테마 등의 세팅
  • 사용자 추적 : 사용자의 행동을 기록하고 분석하는 용도


Web Storage

  • 클라이언트에 데이터를 저장할 수 있도록 HTML5 부터 지원하는 저장소
  • 키와 값 형태로 데이터 저장
  • 쿠키와 달리, 서버에 전송되지 않아 부담이 가지 않는다. (명시적으로만 전송 가능)
  • 쿠키와 달리, 필요한 경우에만 꺼내 쓸 수 있어 자동 전송 위험성이 없다
  • 대략 5MB 까지의 데이터를 저장할 수 있고 유효기간이 존재하지 않는다
  • HTML5 을 지원하지 않는 브라우저에서는 사용할 수 없다
  • 두 가지의 종류, 로컬 스토리지세션 스토리지 가 있다.

  • 로컬 스토리지세션 스토리지 는 window 객체의 프로퍼티로서 존재
  • 같은 스토리지 객체를 상속하기 때문에 동일한 메소드를 가짐
  • 이 두가지의 가장 큰 차이점은 데이터의 영구성

로컬 스토리지 (Local Storage)

  • window.localStorage 객체
  • 브라우저를 종료해도 유지되는 데이터. 명시적으로 지우지 않는 한 영구적으로 저장
  • 도메인별로 생성. 다른 도메인의 로컬 스토리지에는 접근이 불가능
  • 서로 다른 브라우저 탭이라도 같은 도메인이라면 동일한 로컬 스토리지를 사용
  • 자동 로그인 등 지속적으로 필요한 정보를 저장하기에 좋다

세션 스토리지 (Session Storage)

  • window.sessionStorage 객체
  • 쿠키, 로컬과는 달리 탭/윈도우 단위로 생성
  • window 객체와 동일한 유효 범위, 생존기간을 가지며, 탭/윈도우를 닫을 시 데이터가 삭제
  • 서로 다른 세션 스토리지는 독립적으로 동작
  • 윈도우 복제로 생성된 경우에 혹은 새 창을 연 경우, 세션 스토리지가 복제되어 생성
  • 입력 폼 저장, 일회성 로그인 등 잠시동안 필요한 정보를 저장하기에 좋다

출처 : https://velog.io/@dorazi/%EC%BF%A0%ED%82%A4-%EC%9B%B9-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EB%A1%9C%EC%BB%AC-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EC%84%B8%EC%85%98-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80

profile
Je vais l'essayer

0개의 댓글