TIL # 2022.03.17

kdobro_dev·2022년 3월 17일
0

TIL (Today I Learned)

목록 보기
42/56
post-thumbnail

Cookie

📝 오늘 배운 내용

Cookie란

예를 들어, 우리가 어떤 쇼핑몰에서 옷을 주문하기 위해 장바구니에 우리가 구매하고자 하는 옷들을 담았다고 생각해보자. 장바구니에 담은 상태로 다른 옷도 구경하기 위해 여러 페이지들을 구경했는데 왜 장바구니에 옷들은 그대로 남아 있을까? HTTP 요청은 stateless 한데 여러 페이지들을 들어가도 장바구니가 유지가 되는지에 의문이 들 것이다. 그 이유는 바로 쿠키 덕분이다. 쿠키는 어떤 웹사이트에 들어갔을 때, 서버가 일방적으로 클라이언트에 전달하는 작은 데이터이다. 보통은 의사를 물어보지 않고 전달하지만 물어보는 경우도 간혹 볼 수 있다. 다시 정리하면,

  • 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단
  • 해당 도메인에 대해 쿠키가 존재하면, 웹 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달

서버가 응답 헤더에 Set-Cookie라는 속성으로 유저의 이름, 경로 등의 옵션을 저장한다.
쿠키가 담긴 응답을 받은 클라이언트는 응답 헤더에 존재하는 Set-Cookie를 확인하고, 매 요청 시 마다 쿠키에 이름과 값을 서버에게 전달하게 된다. 이런식으로 서버가 쿠키를 저장하면 이후에 해당 웹 사이트를 방문할 때 매 요청에 자동으로 쿠키가 함께 전송이 된다. 쿠키 내용을 바탕으로 서버는 로그인을 유지, 및 테마를 보여주는 것을 알 수 있다.
서버가 클라이언트에 데이터를 저장했지만, 아무 때나 데이터를 가져올 수는 없다. 데이터를 저장한 이후 특정 조건들이 만족하는 경우에만 다시 가져올 수 있다. 이런 조건들은 쿠키 옵션으로 표현할 수 있다.

1. Domain

  • 서버와 요청의 도메인이 일치하는 경우 쿠키 전송

2. Path

  • 서버와 요청의 세부경로가 일치하는 경우 쿠키 전송

3. MaxAge of Expires

  • 쿠키의 유효기간 설정

4. HttpOnly

  • 스크립트의 쿠키 접근 가능 여부 결정

5. Secure

  • HTTPS 프로토콜에서만 쿠키 전송 여부 결정

6. SameSite

  • CORS 요청의 경우 옵션 및 메서드에 따라 쿠키 전송 여부 결정
profile
do your best at any moment

0개의 댓글