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

Posted

技术标签:

【中文标题】Internet Explorer 11 不在 CORS 请求中添加 Origin 标头?【英文标题】:Internet Explorer 11 does not add the Origin header on a CORS request? 【发布时间】:2014-01-14 01:44:34 【问题描述】:

我的问题取决于我持有的几个假设。

假设 nr 1:源头

浏览器需要将Origin 标头放在CORS(跨源资源共享)请求中。

Wikipedia:

为了发起一个跨域请求,浏览器发送请求 一个 Origin HTTP 标头。

html5 Rocks:

首先要注意的是,一个有效的 CORS 请求总是包含 一个 Origin 标头。这个 Origin 头是浏览器添加的,可以 不受用户控制。

W3:

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

假设 nr 2:Internet Explorer 10+ 支持 CORS

请参阅 caniuse.com 并使用谷歌搜索数百个声称支持的不同来源。

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

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

Wikipedia

当且仅当两个资源被认为是同源的 所有这些值都完全相同。 [..] 失败 - 相同的协议 和主机但不同的端口。

Mozilla Developer Network

如果协议、端口(如果一个是 指定),并且主机对于两个页面都是相同的。

问题:

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

【问题讨论】:

我面临着类似的问题。 ***.com/questions/24404705/…有人可以帮忙吗。 现在 IE 的团队在 SO,这确实需要解决。 【参考方案1】:

Internet Explorer 对“同源”的定义与其他浏览器不同。请参阅 MDN 文档中关于同源策略的 IE Exceptions 部分:

Internet Explorer 在同源策略方面有两个主要例外:

信任区域:如果两个域都在高度信任区域,例如公司域,则不适用相同的来源限制 端口: IE 不将端口包含在同源组件中,因此http://company.com:81/index.html 和http://company.com/index.html 被视为同源并且没有应用限制。

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

【讨论】:

您的来源的一个问题是它不是来自 Microsoft 网站。我在微软相关网站上的发现说这是一个可能会被“修复”的错误。奇怪的。可能是您的来源反映了主题观点,因为有人已经“得出结论”必须以特定方式? 我也对 Microsoft 代表在您的链接中使用的词语感到有些困惑。他们提到了“修复”,但他们也将问题描述为“与其他浏览器的长期互操作性差异,我们将不同的端口视为同源,而其他浏览器将它们视为跨源。” MDN 文档指出,这种“互操作性差异”也适用于受信任区域内的站点,这是我所经历行为的原因。 他们指的是“修复”,因为 IE 目前不遵守 RFC6454 规范,该规范说端口(无论是显式指定还是隐式指定)确实构成 Origin 身份的一部分。微软的另一个问题是,长期以来,微软对 Origins 的考虑不同(即不包括端口)。因此,如果他们“修复”行为以遵守规范,他们将破坏任何期望先前行为的人的代码。 (然后有人会对此提出一个错误......这是一个古老的辩论。)【参考方案2】:

我刚刚在Microsoft associated site 上偶然发现了一个报告的错误,它清楚地描述了我的问题。微软员工很快得出结论:

没有足够的信息来重现你的行为 观察。

自从他们第一次发表评论和第一次尝试 (?) 以来,他们实际上已经设法在不同的端口上运行了两个不同的 Web 服务器并重现了该问题。微软的最新评论称他们“考虑在未来进行修复”。

【讨论】:

以上是关于Internet Explorer 11 不在 CORS 请求中添加 Origin 标头?的主要内容,如果未能解决你的问题,请参考以下文章

引导输入组在 Internet Explorer 中将表格推到超出屏幕宽度

如何从 Internet Explorer 11 降级到 Internet Explorer 10?

为啥即使在模拟 Internet Explorer 8 文档模式时,Internet Explorer 11 也不支持条件注释?

Internet Explorer 11 检测

Internet Explorer 11 图像像素化

卡片翻转动画 Internet Explorer 11