HTTP는 Stateless 한 프로토콜이다.

즉, HTTP 프로토콜에서는 클라이언트와 서버간의 어떠한 정보도 기억하지 않는다.

어떠한 정보도 기억하지 않는다면.. 어떤 사이트에서 로그인을 하였을때, 새로고침을 하거나 다른 사이트로 갔다가 돌아오면 로그인이 풀려있어야한다. 그런데 실제로는 로그인 상태가 유지된다. 이것은 어떻게 가능할까?

쿠키

HTTP 자체가 Stateless하기 때문에 상태를 관리하지 않는다. 하지만 앞서 HTTP는 확장이 가능하다고 했다. 그렇다면, HTTP를 확장하여 데이터를 기억하면 어떨까? 그러한 역할을 하는 것이 바로 쿠키다.

사용자의 데이터를 쿠키에 저장하고 있다가 HTTP 요청시 요청헤더를 통해 실어보내면 서버는 그 정보를 읽을 수 있다. 정리하자면, HTTP 자체는 데이터를 유지하지 않지만, 헤더를 통해 클라이언트의 데이터를 실어보내면 마치 데이터가 유지 되는 것과 같은 효과를 낼수 있다.

간단한 예제를 통해 확인해 봅시다

...

세션

일반적으로 세션은 상호간의 연결되어있는 상태를 의미한다.

웹개발에서의 세션은 클라이언트와 서버간의 지속되는 정보를 의미한다. 쿠키는 브라우저에 데이터를 저장하지만, 세션은 서버쪽에 데이터를 저장한다는 점이 다르다.

중요한 점은 세션도 쿠키를 사용한다는 점이다.

세션 ID

...

쿠키와 세션 정리

...