쿠키와 세션
1. 쿠키와 세션을 사용하는 이유
- HTTP 프로토콜의 특성 때문 → 서버가 클라이언트가 누구인지 매 요청 마다 확인을 해야 함.
- 무상태 프로토콜 : 통신의 상태를 유지하지 않음
- 비연결성 : 클라이언트가 응답을 받으면 연결을 끊음
2. 쿠키
- 클라이언트 로컬에 저장되는 키와 값이 들어있는 데이터
- HTTP의 일종
- 특징
- 이름, 값, 만료일(저장기간), 경로 정보로 구성
- 클라이언트에 총 300개의 쿠키를 저장 가능
- 하나의 도메인 당 20개의 쿠키를 가질 수 있음
- 하나의 쿠키는 4KB까지 저장 가능
- Response Header에 Set-Cookie 속성으로 만들 수 있음
- 사용자가 요청하지 않아도 브라우저가 Request를 할 때 Request Header를 넣어서 자동으로 서버에 전송
- 동작 방식
- 클라이언트가 페이지를 요청
- 서버에서 쿠키를 생성
- HTTP 헤더에 쿠키를 포함하여 응답
- 클라이언트가 보관(브라우저가 종료되어도 만료 기간이 안되었다면 가지고 있음)
- 같은 요청을 할 때 HTTP 헤더에 쿠키를 포함해서 보냄
- 서버에서 쿠키를 읽어서 확인 → 정보를 변경할 경우 업데이트하여 클라이언트에게 반환
3. 세션
- 클라이언트가 Request를 요청하면, 해당 서버의 엔진이 클라이언트에게 유일한 세션 ID를 부여.
- 세션은 쿠키와 달리 서버 측에서 관리함
- 서버가 클라이언트를 구분하기 위해서 세션 ID를 부여하고 브라우저를 종료할 때 까지 인증상태를 유지 함.
- 유효시간을 부여할 수도 있음
- 서버가 사용자 정보를 관리하기 때문에 쿠키보다 보안이 좋지만, 사용자가 많으면 메모리를 많이 차지하게 된다.
- 동작방식
- 클라이언트가 서버에 접속 시 세션 ID를 받음
- 클라이언트는 세션 ID에 대한 쿠키를 저장하고 가지고 있음
- 다시 클라이언트가 서버에 Request를 요청할 때, 클라이언트는 쿠키에 세션 ID를 담아서 서버에 전달 함
- 서버는 세션 ID를 가지고 클라이언트의 요청을 처리하여 응답 함.
4. 쿠키와 세션의 차이
쿠키 | 세션 | |
---|---|---|
저장 위치 | 클라이언트 | 웹 서버 |
저장 형식 | text | Object |
만료 시점 | 쿠키 저장시 설정 (브라우저가 종료가 되어도, 만료 시점이 지나지 않는 한 삭제하지 않음) |
브라우저 종료시 삭제 (기간 설정 가능) |
사용하는 자원 | 클라이언트 리소스 | 웹 서버 리소스 |
속도 | 빠름 | 느림 |
보안 | 안좋음 | 좋음 |
참고
'CS > [NETWORK]' 카테고리의 다른 글
[네트워크] JWT란? (0) | 2023.05.14 |
---|---|
Chapter 7 HTTP 헤더2 - 캐시와 조건부 요청 (0) | 2021.11.25 |
Chapter 7 HTTP 헤더1 - 일반헤더 (0) | 2021.11.23 |
Chapter 6 HTTP 상태 코드 (0) | 2021.11.18 |
Chapter 5 HTTP 메서드 활용 (0) | 2021.11.16 |