HTTP의 '무상태성' 특성 때문에, 브라우저에서는 '쿠키'라는 데이터를 저장하고 관리합니다. HTTP 통신에서 쿠키가 어떻게 쓰이고, 관리되는지에 대해 알아보겠습니다.
[ Contents ]
1. 쿠키 (Cookie)
서버에서 필요한 상태정보와 이전 작업물을 임시 저장한 데이터
HTTP 통신에서 서버는 클라이언트의 상태, 임시 정보를 저장하지 않습니다. 임시 데이터를 DB 동기화하기에는 적합하지 않을뿐더러, 클라이언트마다 특정 서버를 배정하기에는 효율적이지 않기 때문입니다.
따라서 프로세스에 필요한 일련의 임시 데이터는 클라이언트 쪽에서 저장하며, 이를 '쿠키(Cookie)'라고 합니다.
2023.07.06 - [CS] - [네트워크] HTTP의 특징: 무상태성(Stateless), 비연결성(Connectionless)
2. Set-Cookie 응답 헤더
서버가 클라이언트에게 저장하라고 준 쿠키 데이터
쿠키는 전적으로 '서버'에서 필요한 데이터입니다. 따라서 서버에서 추후 요청 시 덧붙일 쿠키 데이터를 넘겨줍니다.
Set-Cookie의 값은 클라이언트의 브라우저에 저장되며, 정해둔 유효기간이 지나면 삭제됩니다. 유효일자는 expires로 설정하기도 하고, Max-Age로 타이머를 맞추기도 합니다. (생략 시 브라우저 종료 후 삭제)
path와 domain은 해당 쿠키가 필요한 페이지를 지정합니다. 해당 페이지를 방문할 때에는 쿠키를 반드시 첨부해야 합니다. 그러려고 저장한 쿠키니까요.
한편 Cookie는 클라이언트의 정보를 저장한 것이므로, 세션id나 인증토큰 등 보안적으로 민감한 정보가 들어 있습니다. 암호화는 되어있지만 결코 안전하진 않습니다. 따라서 주민번호나 신용카드 번호 등의 개인정보는 절대 쿠키에 저장해선 안됩니다.
3. Cookie 요청 헤더
클라이언트가 서버에서 받은 쿠키 데이터를 다시 HTTP 요청 시 첨부
서버로 쿠키를 넘기는 헤더입니다. 브라우저에는 수많은 서버의 쿠키들이 저장되어 있고, 특정 페이지에 알맞은 쿠키를 찾아서 함께 보냅니다.
응답 헤더의 Set-Cookie에 비해, 요청 헤더의 Cookie는 상당히 긴 편입니다. 앞서 Set-Cookie에서 누적된 쿠키를 모두 보내기 때문입니다.
댓글