쿠키는 클라이언트 측에 저장된 키와 함께 들어있는 작은 파일입니다.
클라이언트의 상태정보를 로컬에 저장합니다.
그래서, 장바구니 기능, '오늘 더 이상 창을 보지않음 창 팝업' 등에 사용됩니다.
1) 클라이언트가 페이지를 요청하면
2) 서버에서 쿠키를 생성해, http 헤더에 쿠키를 포함시켜 응답합니다
3) 클라이언트는 이 쿠키를 로컬 pc에서 갖고 있다가, 다시 서버에 요청할 때 HTTP 헤더에 이 쿠키를 함께 전송합니다.
4) 서버에서는 이 쿠키를 읽어 이전 상태정보를 변경할 필요가 있으면 쿠키를 업데이트해 HTTP 헤더에 변경된 쿠키를 넣어 반환합니다.
세션은 사용자 정보를 서버측에서 관리합니다.
즉, 보안성이 좋야아 하는 로그인같은 보안 중요작업에 사용됩니다.
서버는 클라이언트 구분을 위해 세션 ID라는 것을 부여합니다. 웹 브라우저가 서버에 접속하고, 브라우저를 종료할 때 까지 인증상태를 유지합니다.
1) 클라이언트가 페이지를 요청하면
2) 서버는 접근한 클라이언트의 request-header필드의 쿠키를 확인해 클라이언트가 세션id를 보냈는지 확인합니다.
3) 만약 세션id가 존재하지 않으면 서버는 세션id를 생성해 클라이언트에 함께 돌려줍니다.
이 때, 서버측에서는 세션 저장소에 해당 id를 저장해, 차후 구분할 수 있도록 합니다.
4) 클라이언트는 세션id를 받으면, 이걸 쿠키를 사용해 저장하고 가지고 있습니다.
5) 클라이언트는 이제 같은 요청으로 서버에 접속할 때, HTTP요청에 이 세션ID를 같이 서버에 전달해 요청합니다.
6) 서버는 세션 ID를 전달 받고, 세션저장소에서 해당 세션 ID값을 찾아 클라이언트 정보를 가져와서 클라이언트를 구분합니다. 그리고 요구에 맞는 서비스를 제공합니다.
서버전송 없이 클라이언트에 데이터를 저장할 수 있도록 HTML5부터 추가된 저장소로, 오직 문자형 데이터 타입만 지원합니다.
쿠키는 서버가 클라이언트에게 전송하는 데이터 파일로, [이름/값/만료일자] 등 데이터를 포함합니다. 모든 브라우저에서 지원되나, 매번 서버에 전송되고, 저장용량이 작으며, 보안에 취약합니다.
웹 스토리지는 쿠키의 단점을 보완하려 등장한 개념입니다.
웹 스토리지는 클라이언트에서 저장만 할 뿐, 서버로 전송하지 않기 때문에 전송에 따른 위험이 없습니다.
웹 스토리지는 지속성에 따라 두 가지로 나뉘는데, 로컬 스토리지(Local Storage)는사용자가 데이터를 지우지 않는 이상, 브라우저나 OS를 종료해도 계속 브라우저에 남아있습니다. 즉, 영구적 저장 특성을 가집니다.
하지만, 세션 스토리지는 데이터가 브라우저 탭에 종속되기 때문에, 윈도우나 브라우저 탭을 닫을 경우 제거됩니다.