학습 목표
- 쿠키의 작동 원리를 이해할 수 있다
- 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 옵션이 필요함
- Domain: 서버와 요청의 도메인이 일치하는 경우 쿠키 전송
- 쿠키의 특성을 이용하여 서버는 클라이언트에 인증정보를 담은 쿠키를 전송하고, 클라이언트는 전달받은 쿠키를 요청과 같이 전송하여 Stateless한 인터넷 연결을 Stateful하게 유지할 수 있음
- 하지만 기본적으로 쿠키는 오랜 시간 동안 유지될 수 있고, 자바스크립트를 이용해서 쿠키에 접근할 수 있기 때문에 쿠키에 민감한 정보를 담는 것은 위험함
'Code States > TIL' 카테고리의 다른 글
[0322] HTTP - 잘 설계된 HTTP API (REST API) (0) | 2023.03.22 |
---|---|
[0322] HTTP - HTTP 헤더 (0) | 2023.03.22 |
[0321] (페어) Git과 버전 관리 시스템 - Simple Git Workflow (0) | 2023.03.21 |
[0321] Git과 버전 관리 시스템 - Git Branch (0) | 2023.03.21 |
[0320] Git과 버전 관리 시스템 - Git (0) | 2023.03.20 |