2.8 쿠키를 사용한 상태관리

HTTP는 스테이트리스 프로토콜이라 이전에 교환했었던 리퀘스트와 리스폰스 상태를 관리하지 않는다.즉 과거의 상태를 근거로 현재의 리퀘스트를 처리하는것은 불가능하다. 예를 들어 인증을 마친 상태를 관리하지 않는다면 새로운 페이지 이동할 때마다 재차 로그인 정보인 정보를 보내거나 리퀘스트 마다 매개변수나 추가 정보를 붙여서 로그인 상태를 관리해야한다.

하지만 상태를 유지하지 않기때문에 서버의 CPU나 메모리같은 리소스 낭비를 억제할 수 있는 이점이 있다.또한 단순한 프로토콜이라 다양한 곳에서 이용할 수 있다.

stateless 특징을 남겨둔채 단점점을 해결하기 위해 쿠키라는 시스템이 도입되었다. 쿠키는 리퀘스트와 리스폰스에 쿠키 정보를 추가해서 클라이언트의 상태를 파악하기 위한 시스템이다.

서버에서 리스폰스로 보내진 set-cookie 라는 헤더 필드에 의해 쿠키가 클라이언트에 전송된다. 다음번에 클라이언트가 같은 서버로 리퀘스트를 보낼 때 , 자동으로 쿠키값을 넣어서 송신한다.서버는 쿠키를 확인해서 누가 접속했는지 체크하고 서버상의 기록을 확인해서 이전 상태를 알 수 있다.

  • 리퀘스트(쿠키가 없을때)

GET /reader /HTTP /1.1 Host: www.xxx.xx

  • 리스폰스(쿠키발행)

HTTP /1.1 200 OK Date: thu, 12 jul 2020 07:00 GMT Server: apache <Set-Cookie: sid=12131313; path=/;expires=wed, => 10=oct-12 08:00 Content-Type:text/plain; charset=UTF-8

  • 리퀘스트(보관하고있던 쿠키를 자동송)

GET / image/HTTP/ 1.1 Host:www.xxx.xxx Cookie: sid=12131313

Last updated