오늘은 Cookie, Local Storage, Session Storage에 대해서 알아보려고 한다.
해당 도메인과 관련된 특정 데이터를 서버가 아니라 클라이언트 웹브라우저에 저장할 수 있도록 제공하는 기능이다.
쿠키(cookie)와 비슷한 기능이며, Web Storage의 개념은 키/값 쌍으로 데이터를 저장하고, 키를 기반으로 데이터를 조회하는 패턴이다.
영구저장소(LocalStorage)와 임시저장소(SessionStorage)를 따로 두어 데이터의 지속성을 구분할 수 있어 응용 환경에 맞는 선택이 가능하다.
▶ 1. 서버 전송이 없다.
▶ 2. 단순 문자열을 넘어 객체 정보를 저장할 수 있다.
▶ 3. 용량의 제한이 없다.
▶ 4. 영구 데이터 저장이 가능하다.
쿠키와 Web Storage 모두 브라우저에 저장되지만 쿠키는 아래와 같은 단점이 있다.
쿠키의 단점을 Web Storage를 사용함으로써 극복할 수 있다.
▶ 1. 4KB의 데이터 저장 제한
▶ 2. HTTP Request에 암호화되지 않은 상태로 사용하기 때문에 보안이 취약하다.
▶ 3. 쿠키는 모든 HTTP Request에 포함되어 있어 웹서비스 성능에 영향을 줄 수 있다.
쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
Response Header에 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있다.
쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시에 Request Header를 넣어서 자동으로 서버에 전송한다.
브라우저 저장소임에도 불구하고 백엔드와 긴밀히 연결되어 있어 쿠키에 있는 내용을 백엔드에서도 빼내어 볼 수 있다.
쿠키에는 추가 옵션 사항들을 적용할 수 있습니다.
▶ 1. 쿠키는 매번 서버로 전송된다.
▶ 2. Web Storage는 단순 문자열을 넘어(스크립트) 객체 정보를 저장할 수 있다. 문자열 기반 데이터 외에 체계적으로 구조화된 객체를 저장할 수 있다.
▶ 3. Web Storage는 용량의 제한이 없다.
▶ 4. Web Storage는 영구 데이터 저장이 가능하다.
쿠키는 만료 일자를 지정하게 되어있어 언젠가 제거된다.
만료 일자를 지정하지 않으면 세션 쿠키가 된다.
영구 쿠키를 원한다면 만료 일자를 굉장히 멀게 설정하여 해결할 수 있다.
Web Storage는 만료 기간의 설정이 없다. 즉, 한 번 저장한 데이터는 영구적으로 존재하게 된다.
출처 및 참고
코드캠프