我的问题取决于我认为的几个假设。
浏览器要求Origin
标头放在CORS(跨域资源共享)请求上。
要发起跨源请求,浏览器会发送请求 Origin HTTP标头。
首先要注意的是,有效的CORS请求总是包含 一个Origin标题。此Origin标头由浏览器添加,并且可以 不受用户控制。
W3:
如果请求网址来源与原始网址不同 origin,将源origin设置为全局唯一标识符[..]。
请参阅caniuse.com并使用谷歌获取数百种不同类型的来源,声称支持。
使用不同端口号的资源被认为具有不同的来源:
当且仅当,两个资源被认为是相同的来源 所有这些值完全相同。 [..]失败 - 相同的协议 和主持但不同的端口。
如果协议,端口(如果是),则两个页面具有相同的来源 指定的),两个页面的主机相同。
在向同一域“localhost”发出CORS请求但使用不同端口(从8411到8080)时,Internet Explorer 11不会发送Origin
标头。 Opera,FireFox和Chrome会发送Origin标头。然而,每个人都在说Internet Explorer 10 +支持CORS?
答案 0 :(得分:18)
Internet Explorer对“同源”的定义与其他浏览器不同。请参阅相同来源政策的MDN文档的 IE Exceptions 部分:
对于相同的原始策略,Internet Explorer有两个主要的例外:
- 信任区域:如果两个域都位于高度受信任的区域,例如公司域,则不会应用相同的原始限制
- 端口: IE不包含进入Same Origin组件的端口,因此http://company.com:81/index.html和http://company.com/index.html被视为来自同一来源,并且不会应用任何限制。
因此,如果您的跨源请求发生在不同的端口或IE的受信任区域内,IE将不会将请求视为跨源,并且不会添加Origin:
标头。
答案 1 :(得分:3)
我碰巧偶然发现了{{3>}报告的错误,它清楚地描述了我的问题。微软员工很快得出结论:
没有足够的信息来重现您的行为 观察。
自从第一次评论和第一次尝试(?)以来,他们实际上设法在不同的端口上运行两个不同的Web服务器并重现了这个问题。微软的最新评论称他们“考虑在未来针对修复”。