*HTTP 프로토콜의 특성인 비연결 지향과 무상태에 특성과 로그인이나 브라우저 입력값이 요청마다 초기화 되는 문제때문의 해결책으로 쿠키를 사용하게 되었다.
인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다.
비연결성지향, 무상태의 특성을 가지고 있다.
비연결성지향 : HTTP가 클라이언트에 요청을 서버에 보내면 서버는 클라이언트에게 요청에 맞는 응답을 보내고 TCP/IP 연결을 끊는 특성
무상태 : 서버가 클라이언트의 상태 정보를 저장하지 않는다. 클라이언트가 서버에 요청을 보내도 서버는 요청간에 관계를 알지 못한다.
쿠키는 서버가 사용자의 브라우저에 전송하는 키-값 구조의 작은 크기의 문자열 이고 용량은 4KB입니다. 브라우저는 데이터를 저장해 놓았다가 동일한 서버에 재 요청 시 저장된 쿠키를 헤더에 담아서 전송합니다.
세션도 쿠키와 마찬가지로 정보를 저장하는데 쿠키는 브라우저에 정보를 저장하는데 세션은 서버측에서 관리하기때문에 보안적으로 더 좋기때문에 사용하게되었다.
세션은 서버 측에서 사용자 정보를 저장하는 방식이다. 사용자가 웹사이트에 접속하면 서버는 세션 ID를 생성하고 이 ID를 통해 사용자의 상태를 관리합니다.
로그아웃 전까지 '로그인 유지'가 가능한 기능
클라이언트(브라우저)에 데이터를 저장할 수 있도락 HTML5부터 추가된 저장소이다. 5MB의 저장 용량을 가지고 있으며 요청마다 헤더에 포함되어 전송되지 않는다는 특징이있다. 도메인, 브라우저 범위로 데이터가 저장된다.
웹스토리에는 로컬스토리지, 세션스토리지가 존재한다.
쿠키와 웹 스토리지는 클라이언트(브라우저)에 저장하여 속도가 빠른 대신 보안이 취약하고 세션은 서버에 저장하여 안전한대신 속도가 비교적 느려서, 프로젝트를 할 때 목적에 맞게 잘 사용하면 좋을 거 같다.
[JS] 쿠키 / 웹 스토리지(로컬 / 세션 스토리지) 비교하며 이해하기
쿠키, 세션, 웹스토리지란? 차이점?
쿠키와 웹 스토리지, 그리고 보안