웹 개발 메모장
[http] 쿠키와 세션을 사용한 상태 관리 본문
쿠키 Cookie / 세션 Session
http 통신은 클라이언트가 Request 를 서버에게 전송하고 그에 따른 Response 를 서버가 답하여 해당 내용을 사용자가 얻는 방식으로 이루어집니다. 하지만 그 과정에서 Request 와 Response 는 기록이 남지 않기 때문에 상태를 저장 할 수가 없어 문제가 생깁니다.
예를 들어 쇼핑몰 사이트에 로그인을 했다고 합시다.
로그인을 하고 상품 목록을 보러 페이지를 이동하면 로그인을 했었다는 기록이 어디에도 남지 않게됩니다.
상품 목록 페이지를 요청할 때 Request 에 로그인 한 기록을 담아서 보내 처리하면 되기는 됩니다.
하지만 장바구니에 상품들을 담는다고 하면 매번 페이지 이동이 발생할 때 마다 로그인 정보와 장바구니에 담긴 상품에 대한 정보를 Request에 담아서 보내야 합니다.
이를 해결하기 위해 쿠키와 세션이 있습니다.
로그인 정보던 장바구니에 담긴 상품의 정보던 저장하기 위해 사용하는게 쿠키 또는 세션입니다.
정보를 어디에 저장하느냐에 따라 세션과 쿠키가 구분되는데 쿠키는 클라이언트의 웹 브라우저에 저장되고 세션은 서버의 하드디스크에 저장됩니다.
각각 장단점이 있는데 세션은 서버에 저장되기 때문에 쿠키보다 보안 상 안전하지만 데이터 양이 많아질 수록 서버의 자원이 그만큼 사용되기 때문에 서버에 부하를 주게 됩니다.
쿠키
클라이언트와 서버 간에 Request 와 Response의 헤더필드에 쿠키 정보를 담아 전송합니다.
서버는 쿠키를 생성해서 클라이언트에게 전달해주고 클라이언트는 전달 받은 쿠키를 서버에게 전달해줍니다.
쿠키를 위한 헤더 필드
헤더 필드 명 |
설명 |
헤더 종별 |
Set-Cookie |
상태 관리 개시를 위한 쿠키 정보 |
Response |
Cookie |
서버에서 수신한 쿠키 정보 |
Request |
Set-Cookie 필드의 속성
속성 |
설명 |
NAME=VALUE |
저장할 정보를 이름과 값 쌍으로 저장합니다. |
Expires=DATE |
쿠키 유효 기간을 설정합니다. |
path=PATH |
쿠키 적용 대상이 되는 서버 상의 디렉토리를 지정합니다. |
Domain=도메인 명 |
쿠키 적용 대상이 되는 서버 상의 도메인 명을 지정합니다. |
Secure |
HTTPS로 통신하고 있는 경우에만 쿠키를 송신합니다. |
HttpOnly |
쿠키를 자바 스크립트에서 접근할 수 없도록 제한합니다. |
'옛날.. > http' 카테고리의 다른 글
[http] 가상 호스트 (0) | 2017.12.29 |
---|---|
[http] HTTP 상태 코드 (0) | 2017.12.29 |
[http] HTTP 메시지의 전달 방법들 (0) | 2017.12.29 |
[http] Request와 Response의 구조 및 역할 (0) | 2017.12.28 |
[http] 웹 브라우저를 통한 http 통신의 기본 동작 (0) | 2017.12.27 |