쿠키와 세션의 사용이유
HTTP프로토콜의 특징이자 약점을 보완하기위해 사용합니다.
HTTP프로토콜의 특징
1. Connectionless 프로토콜 (비연결 지향)
- 클라이언트가 서버에 요청(Request)을 했을 때, 그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다.
2. Stateless 프로토콜
- 커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있다.
- 클라이언트와 첫 번째 통신에서 데이터를 주고받았다 해도, 두 번째 통신에서 이전 데이터를 유지하지 않는다.
이렇게 HTTP의 Stateless 라는 특징 때문에 데이터를 유지해야 하는 경우에 사용하기위해 쿠키와 세션이 등장한 것이다
사용 이유
- 서버와 클라이언트가 통신을 할 때 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊어진다.
- 따라서 서버는 클라이언트가 누구인지 계속 인증을 해줘야 한다. 하지만 그것은 매우 귀찮고 번거로운 일이다.
- 그런 번거로움을 해결하는 방법이 바로 쿠키와 세션이다.
쿠키(Cookie)
쿠키의 동작 순서
- 이런 식으로 쿠키는 요청이 들어오면 쿠키도 같이 만들어서 클라이언트에 쿠키 저장소에 user 정보를 저장 하였다가 다시 쿠키 저장소에서 조회하여 쿠키를 포함한 HTTP요청을 날리면 그의 따른 데이터를 반환한다.
세션(Session)
세션의 동작 순서
- 세션은 쿠키와 다르게 클라이언트의 저장소가 아니라 서버에 세션으로 저장하여 세션id값에 따른 데이터 조회를 가능하게 한다.