当我们需要调用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标头。
XMLHttpRequest-2
题:
何时 添加此标头?
我的意思是:He **是什么意思?
跨域HTTP请求具有一个Origin头。该头为服务器提供请求的来源。此标头受浏览器保护,不能从应用程序代码中更改。本质上,它与跨文档消息传递中使用的消息事件上发现的origin属性在网络上等效。原始标头与较旧的引荐来源[sic]标头的不同之处在于,引荐来源是包含路径的完整URL。因为路径可能包含敏感信息,所以有时尝试保护用户隐私的浏览器不会发送引用。 但是,在必要时,浏览器将始终发送所需的Origin标头 。
什么时候添加此标头?
在标题阶段,发送文档正文open之前(after ,before send)。
open
send
当浏览器(支持CORS)发出请求时,是否添加了它?(跨域还是非跨域?)
当原点与创建 XMLHttpRequest 的页面不匹配时添加,但也可以在同源请求中发送。
还是在浏览器“看到”请求目标来源不同于当前来源时自动添加?
是。
但是,浏览器将始终在必要时发送所需的Origin标头。
这是 XMLHttpRequest 规范的一部分;如果您要进行跨域请求,则在请求标头中会发送一个额外的标头。例如Origin: http://www.stackoverflow.com,此标头由标准遵循的浏览器附加,并且无需用户交互即可添加。
Origin: http://www.stackoverflow.com
你可以阅读更多关于规范 MozillaWiki的安全部分 , WHATWG 和html5.org。它是由(我知道)FireFox和Google Chrome实现的。我不认为它是W3C的一部分。此外 ,不要假设origin标头为true ,因为可以通过修改后的浏览器或其他软件手动设置它。