Internet Explorer 11不会在CORS请求中添加Origin标头?

Mar*_*son 27 internet-explorer xmlhttprequest cross-domain cors

我的问题取决于我认为的几个假设.

假设nr 1:原始标题

Origin头是由浏览器需要在CORS(跨源资源共享)请求被投入.

维基百科:

要启动跨源请求,浏览器会使用Origin HTTP标头发送请求.

HTML5岩石:

首先要注意的是,有效的CORS请求始终包含Origin头.此Origin标头由浏览器添加,不能由用户控制.

W3:

如果请求URL源与原始URL源不同,请将源origin设置为全局唯一标识符[..].

假设2:Internet Explorer 10+支持CORS

请参阅caniuse.com并使用谷歌获取数百种不同类型的来源声称支持.

假设nr 3:不同的端口是不同的起源

使用不同端口号的资源被认为具有不同的来源:

维基百科

当且仅当所有这些值完全相同时,才认为两个资源具有相同的来源.[..]失败 - 相同的协议和主机但不同的端口.

Mozilla开发者网络

如果协议,端口(如果指定了一个端口)和主机对两个页面都相同,则两个页面具有相同的原点.

问题:

Origin在向同一域"localhost"发出CORS请求但使用不同端口(从8411到8080)时,Internet Explorer 11不会发送标头.Opera,FireFox和Chrome会发送Origin标头.然而每个人都在说Internet Explorer 10+支持CORS吗?

sjy*_*sjy 19

Internet Explorer对"同源"的定义与其他浏览器不同.有关同源策略,请参阅MDN文档的IE Exceptions部分:

当涉及到相同的源策略时,Internet Explorer有两个主要的例外:

因此,如果您的跨源请求发生在不同的端口或IE的受信任区域之一,IE将不会将请求视为跨源,并且不会添加Origin:标头.

  • 他们指的是'修复'因为IE目前不遵守[RFC6454](http://tools.ietf.org/html/rfc6454#section-4)规范,该规范说明了端口(无论是否明确指定)或隐含地)_does_构成Origin身份的一部分.微软的另一个问题是,很长一段时间以来,微软都不同地考虑了Origins(即不包括端口).因此,如果他们"修复"遵守规范的行为,他们将打破任何期望之前行为的人的代码.(然后有人会提出一个关于这个问题的错误...这是一个古老的争论.) (2认同)