HTTP란?
- HyperText Transfer Protocol
- 웹에서 데이터를 주고 받을 때 지켜야 할 통신 규약!
- 대표적 HTTP 메서드 :
GET, POST, PUT, DELETE - URL : 요청을 보낼 때, 어디로 요청을 보낼지에 대한 정보.
- 헤더(Header): 요청 보낼 때 필요한 추가 정보 (ex. 브라우저 종류, 언어 설정 등
- 본문(Body) : POST의 경우, 서버에 보낼 데이터를 본문에 포함시킬 수 있음.
- 비연결성 : 요청과 응답이 종료되면 서로의 상태를 기억하지 않는다!
- 무 상태: 서버가 클라이언트 상태를 저장하지 않는다.
=> 쿠키와 세션이 필요
Cookie
쿠키란?
- 웹 서버가 만들어 클라이언트의 브라우저에 저장하는 작은 데이터 조각
- 클라이언트 요청 시 상황에 따라 서버로 같이 전송
- 브라우저가 바뀌면 쿠키는 남아있지 않음
목적
- 클라이언트의 정보를 저장하여 활용할 필요가 있을 때
- 사용자의 패턴 분석을 위해
- 맞춤 광고, 장바구 등
특징
- 서버가 아닌 사용자 브라우저에 저장됨
- 하나의 쿠키는 약 4K
- 유효기간을 설정할 수 있음
- 클라이언트 측에 저장되므로 보안에 상대적으로 취약
Session
세션이란?
- 사용자가 웹 서버에 접속한 상태를 하나의 단위로 봄
- 서버 측에서 사용자 상태를 관리하는 방법
- sessionId를 통해 각 세션을 구분하며, 이는 보통 쿠키로 관리됨
- 이론상으로는 메모리의 제한이 없이 생성이 가능함
목적
- 사용자 인증 상태 유지(로그인 상태 유지 등)
특징
- 서버 측에 저장됨
- 유효기간을 설정할 수 있으며, 만료되면 데이터 사라짐.
- 서버의 메모리를 사용하므로, 사용자가 늘어나면 부담이 될 수 있음
- 쿠키에 비해 보안성이 좋음
요청과 응답 과정
1. 사용자가 웹사이트에 방문
2. 서버에 세션 생성, 쿠키 생성하여 클라이언트에 응답 시 돌려줌
3. 클라이언트에 쿠키가 저장되며 세션ID가 함께 저장
4. 다음 요청 시 가지고 있던 쿠키를 함께 전달
5. 세션을 통한 상태 유지 (장바구니, 로그인 상태 등을 계속 유지함)