的Internet Explorer 11上不CORS请求加入Origin标?的Internet E

2019-05-11 21:58发布

我的问题取决于几个假设我成立。

假设NR 1:起源部首

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

维基百科 :

为了发起跨源请求,浏览器发送具有起源HTTP报头中的请求。

HTML5岩石 :

首先要注意的事情是,一个有效的CORS请求通常包含Origin标。 此Origin标头是由浏览器中加入,并且不能由用户来控制。

在W3 :

如果请求URL是原点不与原始URL原点相同的起源,设置源原点到一个全局唯一标识符[..]。

假设NR 2:Internet Explorer的10+支持CORS

见caniuse.com和使用谷歌的一对夫妇的数百种不同类型的声称支持的来源。

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

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

维基百科

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

Mozilla开发者网络

两个页面具有相同的起源,如果协议,端口(如果指定了一个),和主机都是两个页面相同。

问题:

的Internet Explorer 11不发送Origin使得当CORS请求同一个域“localhost”的,但使用不同的端口(从8411到8080)报头。 歌剧,Firefox和Chrome做派起源头。 然而,每个人都口口声声说CORS在Internet Explorer 10+支持?

Answer 1:

Internet Explorer的“同一血统”的定义不同的其他浏览器。 看到IE异常的同源策略的MDN文件的部分:

Internet Explorer有两个主要的例外,当谈到同源策略:

  • 信任区:如果是在高度信任的区域如企业域,那么同样出身限制不适用这两个域
  • 端口:IE不包括端口成同源的部件,因此http://company.com:81/index.html和http://company.com/index.html从相同的来源考虑并没有施加限制。

因此,如果在不同的端口发生的跨域请求,或者IE的信任区之一内,IE不会要求视为跨来源,并认为没有必要添加Origin:头。



Answer 2:

我刚好在跨越报告的bug,在跌倒微软相关网站能清楚说明我的问题。 微软的工作人员很快得出结论:

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

由于他们的第一个评论和他们的第一次尝试(?),他们实际上已经成功地运行在不同的端口两个不同的Web服务器和重现的问题。 来自微软的最新留言说,他们“靶向考虑在未来修复”。



文章来源: Internet Explorer 11 does not add the Origin header on a CORS request?