programing

CORS 및 Origin 헤더

i4 2023. 3. 12. 10:26
반응형

CORS 및 Origin 헤더

Ajax 요청을 호출해야 할 경우 다음을 수행합니다.

if(typeof XMLHttpRequest !== 'undefined') xhr = new XMLHttpRequest();
else
{
    var versions = ["Microsoft.XmlHttp",
            "MSXML2.XmlHttp",
            "MSXML2.XmlHttp.3.0",
            "MSXML2.XmlHttp.4.0",
            "MSXML2.XmlHttp.5.0"
    ];

이미 알고 있습니다.XMLHttpRequest-2, 크로스 오리진 요구를 할 수 있어 ORIGIN 헤더가 추가됩니다.

질문:.

  • 헤더는 언제 추가됩니까?

    • (CORS를 지원하는) 브라우저가 요구를 실행할 때 추가됩니까? (크로스 도메인 또는 비크로스 도메인)
    • 또는 브라우저가 요청 대상 원본이 현재 원본과 다르다는 것을 "인식"하면 자동으로 추가됩니까?

내 말은, He**의 굵은 선은 무엇을 의미합니까?

크로스 오리진 HTTP 요청에는 오리진 헤더가 있습니다.이 헤더는 서버에 요청의 출처를 제공합니다.이 헤더는 브라우저에 의해 보호되며 응용 프로그램코드에서 변경할 수 없습니다.본질적으로, 이것은 교차 문서 메시징에서 사용되는 메시지 이벤트에서 발견된 오리진 속성과 동등한 네트워크입니다.오리진 헤더는 레퍼러가 경로를 포함한 완전한 URL이라는 점에서 오래된 레퍼러 [sic]헤더와 다릅니다.경로에는 중요한 정보가 포함되어 있을 수 있으므로 사용자의 프라이버시를 보호하려는 브라우저에서 참조자가 전송되지 않을 수 있습니다.단, 브라우저는 필요한 경우 필요한 오리진 헤더를 항상 전송합니다.

오리진 헤더

이 헤더는 언제 추가됩니까?

헤더 단계 중 문서 본문이 전송되기 전(후)open,전에send).

(CORS를 지원하는) 브라우저가 요구를 실행할 때 추가됩니까? (크로스 도메인 또는 비크로스 도메인)

발신지가 XMLHttpRequest가 생성된 페이지와 일치하지 않을 때 추가되지만 동일한 발신지 요청으로 전송될 수도 있습니다.

또는 브라우저가 요청 대상 원본이 현재 원본과 다르다는 것을 "인식"할 때 자동으로 추가됩니까?

네.

단, 브라우저는 필요한 경우 필요한 오리진 헤더를 항상 전송합니다.

이것은 XMLHttpRequest 사양의 일부입니다.크로스 도메인 요청을 할 경우 요청 헤더에 추가 헤더가 전송됩니다.이 헤더는 예를 들어 다음과 같습니다.Origin: http://www.stackoverflow.com사용자 조작 없이 표준 규격에 준거한 브라우저에 의해 추가됩니다.


사양에 대한 자세한 내용은 Mozilla에서 확인할 수 있습니다.Wiki의 보안 섹션, 와트html5.org.FireFox와 Google Chrome에 의해 구현됩니다.나는 아직 그것이 W3C의 일부라고 믿지 않는다.또한 오리진 헤더는 수정된 보서 또는 다른 소프트웨어에 의해 수동으로 설정될 수 있으므로 참이라고 가정하지 마십시오.

도메인 간 요청을 수행하면 오리진 헤더가 자동으로(일반적으로) 추가됩니다.

테스트하기 위해 이 페이지에서 콘솔을 열고 두 가지 다른 요청을 했습니다. 하나는 다른 도메인에 대한 요청이고 다른 하나는 '/'에 대한 요청이며 첫 번째는 오리진 헤더를 추가했습니다.

그나저나 저는 JQuery를 사용하고 있는데, 크로스 브라우저에서도 같은 동작을 하기 위해 JQuery를 사용하는 것이 좋습니다.

이 주제에 대한 보충 정보는 다음을 참조하십시오.

첫 번째로 주의할 점은 유효한 CORS 요구에는 항상 오리진헤더가 포함되어 있다는 것입니다.이 오리진 헤더는 브라우저에 의해 추가되며 사용자가 제어할 수 없습니다.이 헤더의 값은 요청의 발신원인 스킴(http 등), 도메인(bob.com 등) 및 포트(예를 들어 81 등 디폴트포트가 아닌 경우에만 유효)입니다.예를 들어 http://api.alice.com

Origin 헤더가 존재한다고 해서 반드시 요구가 크로스 오리진 요구인 것은 아닙니다.모든 크로스 오리진 요구에는 오리진헤더가 포함되어 있습니다만, 같은 오리진 요구에는 오리진헤더가 포함되어 있는 경우도 있습니다.예를 들어 Firefox는 동일한 오리진 요청에 오리진 헤더를 포함하지 않습니다.다만, Chrome 와 Safari 에서는, 같은 발신기지 POST/PUT/DELETE 요구에 오리진 헤더가 포함되어 있습니다(같은 발신기지 GET 요구에는 오리진 헤더가 없습니다).

원천

언급URL : https://stackoverflow.com/questions/15988323/cors-and-origin-header

반응형