tmp
Origin 헤더에 대하여
janggos
2024. 11. 21. 18:13
Origin 헤더는 HTTP 요청의 출처를 나타내는 헤더로, 요청이 발생한 프로토콜, 호스트(도메인), 그리고 포트를 포함합니다.
Origin 헤더의 동작 원리
- 구성: Origin 헤더는 요청이 발생한 출처의 정보를 포함하며, 다음과 같은 형식으로 제공됩니다.
Origin: <scheme> "://" <hostname> [ ":" <port> ]Origin: https://example.com
- 포함 내용:
- 프로토콜 (http 또는 https)
- 호스트명(도메인) (example.com)
- 포트 번호 (기본 포트는 생략 가능)
브라우저에서 HTTP 요청 시 Origin 헤더의 동작
- 다른 사이트에 요청할 때 (CORS 요청)
- 브라우저는 CORS 요청(다른 출처로의 요청)일 경우, **모든 HTTP 메서드(GET, POST, PUT, DELETE 등)**에 Origin 헤더를 추가합니다.
- 예를 들어, https://a.com에서 https://b.com/resource로 요청하면:
Origin: https://a.com
- 동일 출처 요청(Same-Origin Request)
- POST 요청: 항상 Origin 헤더가 포함됩니다.
- GET 요청: 단순 GET 요청일 경우 Origin 헤더가 생략될 수 있습니다.
- 이미지, CSS, JS 파일 기타등등 리소스를 동일 출처에서 요청하는 경우에 해당.
Origin 헤더가 추가되지 않는 경우
- CORS 요청이 아닌 경우
- 동일 출처(Same-Origin)에서 GET 요청은 Origin 헤더가 포함되지 않을 수 있습니다.
- 비표준 요청 환경
- 브라우저 외의 도구:
- curl, Postman과 같은 비표준 클라이언트는 기본적으로 Origin 헤더를 추가하지 않습니다.
(필요 시 수동으로 추가 가능)
- curl, Postman과 같은 비표준 클라이언트는 기본적으로 Origin 헤더를 추가하지 않습니다.
- 오래된 HTTP 버전:
- HTTP/1.0 클라이언트는 Origin 헤더를 지원하지 않습니다.
- 브라우저 외의 도구:
- 오래된 브라우저
- Internet Explorer와 같은 일부 오래된 브라우저는 Origin 헤더를 생략하거나 비표준 동작을 할 수 있습니다.
정리
- 다른 사이트 요청 (CORS 요청)
- 모든 HTTP 메서드에서 Origin 헤더가 추가됩니다.
- 동일 출처 요청
- POST 요청: 항상 Origin 헤더 추가.
- GET 요청: Origin 헤더가 생략될 수 있음.
- 예외 상황
- 비표준 클라이언트(curl, Postman).
- HTTP/1.0 클라이언트.
- 오래된 브라우저.
잘못된 부분이 있으면 댓글 부탁합니다.