小编典典

CORS和Origin标头?

ajax

当我们需要调用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请求具有一个Origin头。该头为服务器提供请求的来源。此标头受浏览器保护,不能从应用程序代码中更改。本质上,它与跨文档消息传递中使用的消息事件上发现的origin属性在网络上等效。原始标头与较旧的引荐来源[sic]标头的不同之处在于,引荐来源是包含路径的完整URL。因为路径可能包含敏感信息,所以有时尝试保护用户隐私的浏览器不会发送引用。
但是,在必要时,浏览器将始终发送所需的Origin标头


阅读 371

收藏
2020-07-26

共1个答案

小编典典

产地

什么时候添加此标头?

在标题阶段,发送文档正文open之前(after ,before send)。

当浏览器(支持CORS)发出请求时,是否添加了它?(跨域还是非跨域?)

当原点与创建 XMLHttpRequest 的页面不匹配时添加,但也可以在同源请求中发送。

还是在浏览器“看到”请求目标来源不同于当前来源时自动添加?

是。

但是,浏览器将始终在必要时发送所需的Origin标头。

这是 XMLHttpRequest 规范的一部分;如果您要进行跨域请求,则在请求标头中会发送一个额外的标头。例如Origin: http://www.stackoverflow.com,此标头由标准遵循的浏览器附加,并且无需用户交互即可添加。


你可以阅读更多关于规范 MozillaWiki的安全部分
WHATWG
html5.org。它是由(我知道)FireFox和Google
Chrome实现的。我不认为它是W3C的一部分。此外 ,不要假设origin标头为true ,因为可以通过修改后的浏览器或其他软件手动设置它。

2020-07-26