쿠키와 세션을 사용하는 이유
HTTP 프로토콜의 약점을 보완하기 위해서 사용
Stateless 프로토콜
HTTP 각 요청은 독립적인 단위로 처리되며, 요청에 필요한 모든 정보가 헤더에 포함된다, 이에 따라 서버는 클라이언트의 세션 정보나 상태를 유지하지 않고, 각각의 요청에 대해 독립적으로 응답을 생성합니다.
상태 정보를 유지하지 않는다면 만약 로그인을 한후 페이지를 이동할때마다 로그인을 다시하거나 상품을 선택했는데 상품의 정보가 없는등의 일이 발생할 수 있습니다.
따라서, Stateful한 경우를 대처하기 위해 세션과 쿠키를 사용하게 됩니다.
쿠키와 세션의 가장 큰 차이점은 상태 정보의 저장 위치입니다. 쿠키는 클라이언트(로컬PC)에 저장하고 세션은 서버에 저장합니다.
쿠키(Cookie)
유저가 어떠한 웹 사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일입니다.
HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있습니다.
쿠키는 Key 와 Value 의 형태로 구성되어있으며 개발자도구 Application탭에서 Cookies를 통해 확인할 수 있습니다.
- 쿠키의 특징
- 이름,값,만료일(저장기간),경로 정보로 구성
- 클라이언트에 총 300개의 쿠키 저장 가능
- 하나의 도메인 당 20개의 쿠키를 가질 수 있다
- 하나의 쿠키는 4KB 까지 저장가능
- 쿠키의 동작 순서
- 유저가 페이지를 요청(웹사이트 방문)
- 서버는 쿠키를 생성
- 서버는 생성한 쿠키에 정보를 담아 HTTP 화면을 돌려줄때, 같이 유저에게 전달한다.
- 넘겨받은 쿠키는 유저가 가지고있다가(로컬PC저장) 다시 서버에 요청할 때 요청과 함께 쿠키를 전송
- 동일 사이트 재방문 시 유저의 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송
세션(Session)
유저가 브라우저를 접속한 시점부터 종료하는 시점까지를 말한다.즉 유저가 웹 서버에 접속해 있는 상태를 하나의 세션이라고 한다.
- 세션 특징
- 서버에 상태를 유지하기 위한 정보를 저장한다
- 웹 서버의 저장되는 세션쿠키
- 브라우저를 닫거나 서버에서 세션을 삭제했을 때만 삭제가 되므로 일반적인 쿠키보다 보안이 좋다
- 저장 데이터는 서버의 용량이 허용되는 한까지 가능
- 각 클라이언트에 고유 세션 ID를 부여한다 세션ID로 클라이언트를 구분한다
- 세션의 동작순서
- 유저가 페이지를 요청
- 서버는 유저의 Request-Header 필드인 Cookie를 확인하여 유저가 session-id를 보냈는지 확인
- session-id가 존재하지 않는다면 서버는 session-id를 생성해 유저에게 전달
- 유저는 서버로부터 받은 session-id를 쿠키에 저장
- 유저는 서버에 요청시 저장된 쿠키의 session-id 값을 서버에 전달
- 서버는 전달받은 session-id로 session에 있는 유저 정보를 가지고 요청을 처리
쿠키와 세션의 차이
- 쿠키는 서버자원을 사용하지않음, 세션은 서버자원을 사용
- 쿠키는 브라우저를 종료해도 만료기간이 있기때문에 정보 유지가능, 세션은 브라우저 종료시 정보삭제
- 쿠키는 로컬에 정보가 있기에 서버에 저장되어있는 세션보다 속도면에서 쿠키가 우수하다.
'컴퓨터 사이언스' 카테고리의 다른 글
브라우저의 렌더링 과정 (0) | 2023.07.23 |
---|---|
웹 브라우저 동작원리 - 브라우저에 URL을 입력하면 일어나는일 (0) | 2023.07.12 |
CORS(교차 출처 리소스 공유) 란 무엇일까? (0) | 2023.05.20 |