Code States/TIL

[0322] HTTP - Cookie

ki1111m2 2023. 3. 22. 15:34

학습 목표

  • 쿠키의 작동 원리를 이해할 수 있다
  • HTTP 헤더의 역할에 대해 이해할 수 있다.
    • 표현, 콘텐츠 협상 등 다양한 헤더의 역할에 대해 알 수 있다.
  • REST API에 대해 이해할 수 있다.
    • REST API 문서를 읽을 수 있다.
    • REST API에 맞춰 디자인할 수 있다.
  • HTTPS의 개념을 이해할 수 있다.
    • HTTP와 HTTPS의 차이점을 이해할 수 있다.

  • 어떤 웹사이트에 들어갔을 때, 서버가 일방적으로 클라이언트에 전달하는 작은 데이터
  • 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단
  • 해당 도메인에 대해 쿠키가 존재하면, 웹 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달
  • 쿠키를 이용하는 것은 단순히 서버에서 클라이언트에 쿠키를 전송하는 것만 의미하지 않고, 클라이언트에서 서버로 쿠키를 전송하는 것도 포함됨
  • 특징
    • 서버가 클라이언트에 데이터를 저장할 수 있음
    • 하지만 데이터를 저장한 이후 아무 때나 데이터를 가져올 수는 없고, 특정 조건들이 만족하는 경우에만 다시 가져올 수 있음
  • 쿠키 옵션
    • Domain: 서버와 요청의 도메인이 일치하는 경우 쿠키 전송
      • 쿠키 옵션에서 도메인은 포트 및 서브 도메인 정보, 세부 경로를 포함하지 않음
    • Path: 서버와 요청의 세부경로가 일치하는 경우 쿠키 전송
      • 세부경로: 서버가 라우팅할 때 사용하는 경로
    • MaxAge or Expires: 쿠키의 유효기간 설정
      • MaxAge: 앞으로 몇 초 동안 쿠키가 유효한지 설정
      • Expires: 언제까지 유효한지 날짜를 지정
      • 두 옵션이 모두 지정되지 않는 경우, 브라우저의 탭을 닫아야만 쿠키가 제거됨
    • HttpOnly: 자바스크립트의 쿠키 접근 가능 여부 결정
    • Secure: HTTPS 프로토콜에서만 쿠키 전송 여부 결정
    • SameSite: CORS(Cross-Origin) 요청의 경우 옵션 및 메서드에 따라 쿠키 전송 여부 결정
      • Lac: Cross-Origin 요청이면 ‘GET’ 메소드에 대해서만 쿠키를 전송할 수 있음
      • Strict: Cross-Origin 요청이 아닌 same-site(요청을 보낸 Origin과 서버의 도메인이 같은 경우)인 경우에만 쿠키를 전송할 수 있음
      • NONE: 항상 쿠키를 보내줄 수 있으나 Secure 옵션이 필요함
  • 쿠키의 특성을 이용하여 서버는 클라이언트에 인증정보를 담은 쿠키를 전송하고, 클라이언트는 전달받은 쿠키를 요청과 같이 전송하여 Stateless한 인터넷 연결을 Stateful하게 유지할 수 있음
  • 하지만 기본적으로 쿠키는 오랜 시간 동안 유지될 수 있고, 자바스크립트를 이용해서 쿠키에 접근할 수 있기 때문에 쿠키에 민감한 정보를 담는 것은 위험함