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 헤더의 동작

  1. 다른 사이트에 요청할 때 (CORS 요청)
    • 브라우저는 CORS 요청(다른 출처로의 요청)일 경우, **모든 HTTP 메서드(GET, POST, PUT, DELETE 등)**에 Origin 헤더를 추가합니다.
    • 예를 들어, https://a.com에서 https://b.com/resource로 요청하면:
  2. 동일 출처 요청(Same-Origin Request)
    • POST 요청: 항상 Origin 헤더가 포함됩니다.
    • GET 요청: 단순 GET 요청일 경우 Origin 헤더가 생략될 수 있습니다.
      • 이미지, CSS, JS 파일 기타등등 리소스를 동일 출처에서 요청하는 경우에 해당.

Origin 헤더가 추가되지 않는 경우

  1. CORS 요청이 아닌 경우
    • 동일 출처(Same-Origin)에서 GET 요청은 Origin 헤더가 포함되지 않을 수 있습니다.
  2. 비표준 요청 환경
    • 브라우저 외의 도구:
      • curl, Postman과 같은 비표준 클라이언트는 기본적으로 Origin 헤더를 추가하지 않습니다.
        (필요 시 수동으로 추가 가능)
    • 오래된 HTTP 버전:
      • HTTP/1.0 클라이언트는 Origin 헤더를 지원하지 않습니다.
  3. 오래된 브라우저
    • Internet Explorer와 같은 일부 오래된 브라우저는 Origin 헤더를 생략하거나 비표준 동작을 할 수 있습니다.

정리

  1. 다른 사이트 요청 (CORS 요청)
    • 모든 HTTP 메서드에서 Origin 헤더가 추가됩니다.
  2. 동일 출처 요청
    • POST 요청: 항상 Origin 헤더 추가.
    • GET 요청: Origin 헤더가 생략될 수 있음.
  3. 예외 상황
    • 비표준 클라이언트(curl, Postman).
    • HTTP/1.0 클라이언트.
    • 오래된 브라우저.

 

잘못된 부분이 있으면 댓글 부탁합니다.