Internet explorer Internet Explorer 11是否未在CORS请求中添加源标题?
我的问题取决于几个我认为正确的假设 假设编号1:原始标题 浏览器要求将Internet explorer Internet Explorer 11是否未在CORS请求中添加源标题?,internet-explorer,xmlhttprequest,cross-domain,cors,Internet Explorer,Xmlhttprequest,Cross Domain,Cors,我的问题取决于几个我认为正确的假设 假设编号1:原始标题 浏览器要求将源站标题放在CORS(跨源站资源共享)请求上 : 要启动跨源请求,浏览器会发送带有 源HTTP头 : 首先要注意的是,有效的CORS请求始终包含 原点标题。此原点标头由浏览器添加,并且可以 不能由用户控制 : 如果请求URL来源与原始URL的来源不同 原点,将源原点设置为全局唯一标识符[…] 假设2:Internet Explorer 10+支持CORS 请查看并使用谷歌,以获取数百个不同类型的声称支持的来源 假设3:不同的端
源站
标题放在CORS(跨源站资源共享)请求上
:
要启动跨源请求,浏览器会发送带有
源HTTP头
:
首先要注意的是,有效的CORS请求始终包含
原点标题。此原点标头由浏览器添加,并且可以
不能由用户控制
:
如果请求URL来源与原始URL的来源不同
原点,将源原点设置为全局唯一标识符[…]
假设2:Internet Explorer 10+支持CORS
请查看并使用谷歌,以获取数百个不同类型的声称支持的来源
假设3:不同的端口是不同的来源
使用不同端口号的资源被视为来自不同的来源:
当且仅当
所有这些值都完全相同。[…]故障-相同协议
和主机,但端口不同
如果协议、端口(如果其中一个是
指定的)和主机对于这两个页面是相同的
问题是:
当使用不同端口(从8411到8080)向同一域“localhost”发出CORS请求时,Internet Explorer 11不会发送
Origin
头。Opera、FireFox和Chrome都会发送源标题。然而每个人都说CORS在InternetExplorer10+中是受支持的。我只是碰巧在一次会议上偶然发现一个报告的bug,它清楚地描述了我的问题。微软员工很快得出结论:
没有足够的信息来重现您的行为
观察
自从他们的第一次评论和第一次尝试(?)以来,他们实际上已经在不同的端口上运行了两个不同的web服务器,并重现了这个问题。微软的最新评论称,他们“考虑在将来进行修复。”Internet Explorer对“同一来源”的定义与其他浏览器不同。请参阅MDN文档中关于同一原产地政策的部分: 对于同源策略,Internet Explorer有两个主要例外:
- 信任区域:如果两个域都位于高度信任区域,例如公司域,则不应用相同来源限制
- 端口:IE不将端口包含在同一来源组件中,因此,从同一来源考虑,不应用任何限制
因此,如果您的跨源请求发生在不同的端口上,或者在IE的某个受信任区域内,IE将不会将该请求视为跨源请求,并且不需要添加
源:
标题。源代码的一个问题是它不是来自Microsoft站点。我在微软相关网站上的调查结果显示,这是一个可能被“修复”的bug。奇怪。这可能是因为你的信息来源反映了主题的观点,因为有人“推断”这一定是以某种特定的方式出现的?我对Microsoft代表在你的链接中使用的词语也有点困惑。他们提到了“修复”,但他们也将该问题描述为“与其他浏览器的长期互操作性差异,我们将不同端口视为同一来源,而其他浏览器将其视为跨来源。”MDN文档指出,这种“互操作性差异”也适用于受信任区域内的站点,这就是我所经历的行为的原因。他们指的是“修复”,因为IE目前不符合说明端口(无论是显式指定还是隐式指定)确实构成源标识一部分的规范。微软面临的另一个问题是,很长一段时间以来,微软一直以不同的方式考虑来源(即不包括端口)。因此,如果他们“修复”行为以遵守规范,他们将破坏任何人期望的先前行为的代码。(然后有人会对此提出质疑……这是一场由来已久的辩论。)我面临着类似的问题。有人能帮忙吗?IE的团队现在在这里,这真的需要解决。