쿠키와 세션을 왜 사용할까?
HTTP 프로토콜의 특성이자 약점을 보완하기 위해 쿠키나 세션을 사용한다.
HTTP 프로토콜은 connectionless, stateless 한 특성을 가지기 때문에 서버는 클라이언트가 누구인지 확인해야 한다.
- Connectionless 비연결 지향
- 클라이언트가 서버에 요청을 했을 때, 그 요청에 맞는 응답을 보내고 연결을 끊어버리는 특징
- Stateless
- 통신이 끝나면 상태를 유지하지 않는 특징
- 정보가 유지되지 않으면 매번 로그인을 다시해야하는 번거로운 일이 발생한다.
서버와 클라이언트가 통신을 할 때 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊긴다. 따라서 서버는 클라이언트가 누군인지 계속 인증을 해줘야하는 번거로운 일이 발생하여, 이를 해결하기 위해 클라이언트의 정보 유지를 하기 위해 쿠키와 세션을 사용한다.
Cookie
HTTP의 일종으로, 사용자가 어떤 웹 사이트를 방문할 경우 그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다.
쿠키 특징
- • 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.
- 쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조한다.
- Response Header에 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있다.
- 쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시에 Request Header를 넣어서 자동으로 서버에 전송한다.