HTTPQUERY
한국어

Origin

사용법

브라우저는 교차 출처 요청과 특정 메서드나 API가 유발한 동일 출처 요청에 Origin 헤더를 붙입니다. 이 헤더는 요청이 어디서 시작되었는지 식별하여, 서버가 접근 제어 정책을 시행하는 데 필요한 정보를 제공합니다.

이 헤더는 모든 CORS 요청(사전 요청 포함), POST를 사용하는 폼 제출, 그리고 Fetch API나 XMLHttpRequest가 시작한 요청에 나타납니다. 브라우저는 동일 출처 GET이나 HEAD 내비게이션 요청에는 이 헤더를 포함시키지 않습니다.

Referer 헤더와 달리 Origin은 경로나 쿼리 문자열을 절대 포함하지 않아 개인정보 보호 측면에서 더 낫습니다. Sec-Fetch-Site 헤더는 요청을 same-origin, same-site, cross-site, none으로 분류하여 보완적인 신호를 제공합니다.

scheme://host:port

프로토콜, 호스트명, 포트로 구성된 완전한 오리진입니다. 프로토콜이 기본 포트(HTTP는 80, HTTPS는 443)를 사용하면 포트는 생략됩니다.

Origin: https://example.com
Origin: https://api.example.re:8443

null

오리진이 개인정보에 민감하거나 불투명할 때 전송됩니다. 샌드박스 iframe, data: URL, 오리진을 넘나드는 리다이렉트가 null 값을 만들어 냅니다.

Origin: null

참고

접근 제어를 null에 의존하는 서버는 보안 구멍을 만듭니다. 서로 무관한 여러 컨텍스트가 같은 null 오리진을 공유하므로, 이 값을 신뢰하면 그 모두에 접근을 허용하는 셈이 됩니다.

예시

프런트엔드 애플리케이션의 교차 출처 POST가 Origin 헤더를 포함시켜, 서버가 CORS가 활성화된 응답을 반환하기 전에 호출자를 검증할 수 있게 합니다.

요청

POST /api/orders HTTP/1.1
Host: api.example.re
Origin: https://shop.example.re
Content-Type: application/json

응답

HTTP/1.1 201 Created
Access-Control-Allow-Origin: https://shop.example.re
Vary: Origin

사전 요청 OPTIONS는 의도한 메서드 및 헤더와 함께 오리진을 실어 보냅니다.

요청

OPTIONS /api/orders HTTP/1.1
Host: api.example.re
Origin: https://shop.example.re
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type