
143
9
장
-
쿠키와 세션
HTTP
는 ‘상태가 없는
stateless
’ 프로토콜입니다. 즉 브라우저에서 페이지를 불러온 다음, 같은 웹
사이트에 있는 다른 페이지로 이동하더라도, 서버나 브라우저 중 누구도 같은 브라우저가 같은
사이트를 방문했음을 알 수 없다는 뜻입니다. 달리 말하자면, 웹은 원래 모든
HTTP
요청에는
서버에서 그 요청을 수행할 때 필요한 정보가 모두 들어 있다는 방식으로 움직입니다.
하지만 이건 문제입니다. 만약 이야기가 “모든
HTTP
요청에는… 들어 있다”에서 그냥 끝난다
면, 우리는 어디에도 ‘로그인’할 수 없습니다. 스트리밍 미디어도 동작하지 않을 겁니다. 웹사이
트는 페이지를 이동할 때마다 사용자 선호 설정을 전부 잊어버릴 겁니다. 따라서
HTTP
위에
‘상태’를 전송할 방법이 필요합니다. 쿠키와 세션은 이 목적에 따라 만들어졌습니다.
불행히도, 사람들이 쿠키를 써서 나쁜 일들을 했기 때문에 쿠키도 덩달아 누명을 썼습니다. ‘모
던 웹’이 제대로 동작하려면 쿠키가 꼭 필요한데 이렇듯 악명이 높아졌으니 참 불행한 일입니
다(
HTML5
에서 이와 같은 목적에 쓸 수 있는 로컬 스토리지 같은 새 기능을 도입하긴 했습니
다).
쿠키의 아이디어는 단순합니다. 서버는 정보를 조금 보내고 브라우저는 일정 시간 그 정보를
저장하는데, 그 시간은 설