웹 개발을 할 때, 아무리 간단한 프로그램이라도 데이터를 저장해야하는 프로세스들이 생기게 됩니다. 일반적으로 이런 경우에 서버에 데이터를 저장하게 됩니다.
하지만 저장해야하는 데이터가 중요하지 않은 데이터이거나 임시로 브라우저에서만 사용하는 데이터인 경우들도 있습니다. 이런 경우에도 서버에 데이터를 저장하는 것은 낭비일 수 있습니다. 그럼 이럴 때는 데이터를 어디에 저장하고 사용해야할까요?
우리는 클라이언트에서 데이터를 저장하고 사용하는데 쿠키
, 로컬 스토리지
, 세션 스토리지
(+IndexedDB) 등 다양한 방법을 사용할 수 있습니다.
먼저 쿠키에 대해서 알아보겠습니다. 그럼 쿠키가 뭘까요? 당연히 먹는 쿠키는 아닐텐데 말이죠.
쿠키의 정의를 살펴보면 다음과 같습니다.
<aside> 👉 쿠키의 정의 브라우저에 저장되는 작은 크기의 문자열로, RFC 6265 명세에서 정의한 HTTP 프로토콜의 일부이다.
</aside>
정의만 봐서는 브라우저에 저장되는 문자열이라는 것 말고는 잘 모르겠으니 차근차근 알아봅시다.
쿠키는 주로 웹 서버에 의해 만들어지며 서버가 HTTP 응답 헤더(header)의 Set-Cookie
에 내용을 넣어 전달하면, 브라우저는 이 내용을 자체적으로 브라우저에 저장합니다.
브라우저는 사용자가 쿠키를 생성하도록 한 사이트에 접속할 때마다 쿠키의 내용을 Cookie
요청 헤더에 넣어서 함께 전달합니다.
쿠키는 클라이언트 식별과 같은 인증에 가장 많이 쓰이는데, 이후에 다루겠지만 현재에는 보안 이슈로 현재는 이러한 로그인 인증 방법을 잘 사용하지는 않습니다.
Set-Cookie
에 세션 id 정보를 담아 클라이언트에 보내줍니다.Cookie
헤더에 인증 정보(세션 id)를 함께 실어 서버에 요청을 보냅니다.