Roy*_*mir 29 javascript ajax http http-headers cors
当我们需要调用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"
];
Run Code Online (Sandbox Code Playgroud)
我已经知道,使用XMLHttpRequest-2,我们可以做一个跨源请求和该ORIGIN头被添加.
题:
这个标题何时添加?
我的意思是:大胆的线是什么意思?
跨源HTTP请求具有Origin头.此标头为服务器提供请求的来源.此标头受浏览器保护,无法从应用程序代码更改.本质上,它是在Cross Document Messaging中使用的消息事件中找到的origin属性的网络等价物.origin标头与旧的referer [sic]标头不同,因为referer是包含路径的完整URL.由于路径可能包含敏感信息,因此有时不会通过尝试保护用户隐私的浏览器发送引用.但是,浏览器将始终在必要时发送所需的Origin标头.
Pau*_* S. 45
添加此标题后?
在标题的阶段,在文档的正文发送open之前(之前,之后send).
是否在浏览器(支持CORS)正在执行请求时添加?(跨域还是非跨域?)
当源与创建XMLHttpRequest的页面不匹配时添加它,但也可以在同源请求中发送.
或者当浏览器"看到"请求目标源与当前源不同时自动添加...
是.
但是,浏览器将始终在必要时发送所需的Origin标头.
这是XMLHttpRequest规范的一部分; 如果您正在发出跨域请求,请在请求标头中发送额外的标头.此标头是例如Origin: http://www.stackoverflow.com并且在没有用户交互的情况下由标准跟随浏览器附加.
您可以在MozillaWiki的安全部分,WHATWG和html5.org中阅读有关规范的更多信息.它由(我所知道的)FireFox和谷歌Chrome实现.我不相信它是W3C的一部分.此外,不要假设原始标题是真的,因为它可以通过修改的borwsers或其他软件手动设置.
执行跨域请求时,会自动(通常)添加原始标头.
为了测试它,我打开了这个页面上的控制台,并提出了两个不同的请求:一个用于另一个域,一个用于'/',只是第一个得到了原始标题.
顺便说一句,我正在使用JQuery,我真的建议你也使用它来实现跨浏览器的相同行为.
有关该主题的补充信息,请检查以下内容:
首先要注意的是,有效的CORS请求始终包含Origin头.此Origin标头由浏览器添加,不能由用户控制.此标头的值是请求所源自的方案(例如http),域(例如bob.com)和端口(仅在它不是默认端口时包括,例如81); 例如:http://api.alice.com.
Origin头的存在并不一定意味着请求是跨源请求.虽然所有跨源请求都将包含Origin标头,但某些同源请求可能也包含一个.例如,Firefox在同源请求中不包含Origin标头.但Chrome和Safari在同源POST/PUT/DELETE请求中包含Origin标头(同源GET请求不具有Origin标头).
| 归档时间: |
|
| 查看次数: |
61136 次 |
| 最近记录: |