쿠키, 세션 사용 이유
- HTTP의 특징 및 약점을 보완하기 위해 사용한다.
- HTTP의 connectionless, stateless 특징을 보완.
connectionless
- 클라이언트가 request를 서버에 보내고 서버는 이에 맞는 response를 보내고 접속을 끊는 특징.
stateless
- 통신이 끝나면 상태를 유지하지 않는 특징.
- 연결이 끊어지는 동시에 클라이언트와 서버 통신이 끝나고 상태 info는 사라진다.
쿠키 (Cookie)
쿠키 정의
- 클라이언트에 저장되는 key, value가 있는 작은 데이터 파일이다.
- 유효 시간이 정해지면 브라우저 종료되어도 유지된다.
- 클라이언트 상태 info를 로컬에 저장한다.
- 한 도메인당 20개의 값 가지고 한 쿠키값은 4KB까지 저장된다.
- Response Header에 Set-Cookie를 사용하면 클라이언트에 쿠키 생성 가능하다.
쿠키 동작
- 클라이언트가 페이지 요청
- 서버에서 쿠키 생성
- HTTP 헤더에 쿠키 포함시켜 response
- 동일한 요청 시 HTTP 헤더에 쿠키를 함께 보낸다.
세션 (Session)
세션 정의
- 쿠키 기반이나 사용자 info 파일을 서버 측에서 관리한다.
- 서버에서는 클라이언트 구분 위해 세션 ID를 부여하고 브라우저 종료할 때까지 인증상태 유지한다.
- 쿠키보다 보안이 좋으나 사용자가 많아지면 서버 메모리를 많이 차지하게 된다.
세션 동작
- 클라이언트가 서버 접속 시 Session ID를 발급 받는다.
- 클라이언트는 세션 ID에 대해 쿠키 사용하여 저장한다.
- 클라이언트에서 서버에 요청 시, 세션 ID를 서버에 전달한다.
- 서버는 세션 ID로 세션 내 클라이언트 정보를 가져온다.