Untitled

프론트 개발을 하든 백엔드 개발을 하든 웹에 대해 공부한 경험이 있으면 한번쯤은 들어봤을 단어이다. 필자도 프로젝트를 진행하면서 쿠키를 사용했지만 정작 쿠키에 대한 개념이 제대로 정립되지 않았음을 느꼈다

그래서 이 글을 정리함으로써 쿠키에 대한 개념을 확실히 정립하고 지식을 공유하고자 한다


HTTP 쿠키란?

MDN에 따르면 HTTP 쿠키는 서버가 사용자의 웹 브라우저에게 전송하는 작은 데이터 조각이다

❓쿠키는 웹 브라우저에게 전송이 되는데 .. 그러면 어떤 식으로 쿠키를 주고 받을까?

먼저 쿠키는 <이름> = <값> 형태를 지니는 단순한 문자열이고 서버와 브라우저는 기본적으로 HTTP 메시지 안에 이 쿠키를 담아서 주고 받게 된다

좀 더 자세하게 살펴보자면 서버가 어떤 쿠키를 브라우저에 저장하고 싶다면 해당 쿠키를 브라우저에게 보내줘야 한다. 이때 서버는 요청 없이 클라이언트로 데이터를 보낼 수 없으니 클라이언트 요청에 응답 메시지를 보낼 때 Set-Cookie라는 응답 헤더에 브라우저가 수신해야 할 쿠키 정보를 명시한다

( 이때 참고로 Set-Cookie 응답 헤더에는 하나의 쿠키만 담을 수 있기에 여러 개의 쿠키를 보낼 때는 아래와 같은 형태를 띈다)

Set-Cookie : <이름> =<값>
Set-Cookie : <이름> =<값>
Set-Cookie : <이름> =<값>

이렇게 서버로 부터 쿠키를 받은 브라우저는 해당 쿠키를 클라이언트 컴퓨터의 하드 디스크에 저장한다. 그리고 브라우저는 동일한 서버에 요청을 할 때 저장해놓은 쿠키를 Cookie 라는 요청 헤더에 보낸다

<aside> 💡 이때 서버는 Set-Cookie 헤더를 통해 쿠키를 한 번 보내지만 브라우저는 일정 시간 동안 동일한 서버에 요청을 할 때마다 Cookie 헤더를 통해 서버로 쿠키를 돌려보낸다

</aside>