- 클라이언트(사용자)측 브라우저에 저장하기 위한 API ➡️ 네트워크 없이 빠르게 데이터베이스에 접근 가능!
- HTTP 프로토콜의 특징이자 약점을 보완하기 위해!
HTTP 프로토콜의 특징
Connectionless Protocol(비연결 지향)
: 클라이언트가 서버에 요청(request)를 하고 응답을 받으면 연결을 끊는 서버 처리 방식
Stateless protocol
: 서버가 클라이언트의 상태 정보를 저장하지 않는 서버 처리 방식
➡️ 통신이 끝나면 상태는 유지되지 않는다
- 통신이 연속적으로 이어지지 않고 통신이 한 번 완료되면 끊어짐
- 데이터가 유지되지 않는다
➡️ 매번 페이지 이동할 때마다 로그인을 다시해야하는 불상사가 발생함
이를 보완하기 위해 쿠키나 세션을 사용하는 것❗️
쿠키: 로컬 PC에 저장
세션: 웹 서버에 저장
- JS에서 데이터 저장, 전송할 때 가장 많이 사용되는 경량의 데이터 교환 형식
- 쿠키보다 더 직관적, 안전 그러나 문자열만 가능
사용예시
: 자동 로그인
사용예시
: 일회성 로그인, 입력 폼 저장
: 클라이언트(브라우저) 로컬에 저장되는 key - value 형태의 작은 데이터 파일
- 적은양, 문자열만 저장 가능 👉 용량 제한이 있음(하나의 도메인에서 최대 20개)
- 고전적, 보안 이슈 👉 암호화 되지 않은 상태로 사용됨
- 페이지 부하를 증가시킴 👉 쿠키를 설정하면 이후 모든 웹 요청(HTTP request)은 쿠키정보를 포함해서 서버로 전송(매번 서버로 전송됨)
사용예시
:로그인 상태 유지, http의 상태 연결 특성 보완
: key를 이용해 index되는 구조화된 데이터를 쉽게 저장할 수 있음
위 3개의 단점을 보완
- 단순 문자열 ㄴㄴ,더 복잡하고 구조적인 데이터 다루기 가능
- 더 많은 양의 데이터를 저장
- 여러개의 데이터베이스를 갖고 각 데이터베이스 내부에 여러개의 table 생성 가능
- key를 기반으로 저장, 조회
비슷한 역할, 비슷한 동작원리
: 해당 도메인과 관련된 데이터를 클라이언트 사이드에 저장, 도메인 단위로 접근 제한
쿠키🍪
1. 적은양, 문자열만 저장 가능
2. 매번 서버로 전송(페이지 부하)
3. 보안 이슈(스니핑 주의❗️)
4. 만료일자 존재
Web Storage🍪
1. 많은 양, 문자열 저장 가능
2. 클라이언트에만 저장, 서버로 전송 ❌
3. 비교적 좋은 보안성(쿠키를 이용해 sessionid만 저장, 아이디로 구분해 서버에서 처리)
4. 영구적 저장
LocalStorage
: 브라우저를 닫아도 데이터 영구적으로 보관 가능
SessionStorage
: 부라우저를 닫으면 정보가 삭제됨
https://interconnection.tistory.com/74
엘리스 sw 자료 - https://bitsofco.de/an-overview-of-client-side-storage(이걸 참조한거 같음)