IE 11 跨域请求

Posted

技术标签:

【中文标题】IE 11 跨域请求【英文标题】:IE 11 Cross Domain Request 【发布时间】:2019-04-23 06:40:23 【问题描述】:

EDIT2:只想对在 cmets 中帮助我的所有人表示感谢。在浏览了 IE11 中的一堆网站并查看了他们的 ajax 请求之后,似乎很多人的请求都被 cors 阻止了,并且大多数代码都回退到 jsonp,所以我认为我们也会这样做。

编辑:这不是另一个提到的问题的重复,因为正如我在下面所说的,我没有使用凭据,因此它不会尝试随请求发送域 cookie,并且不需要 P3P 标头。我已通过检查 IE 中的隐私部分确认了这一点,并且没有任何内容被阻止。

我从另一个网站向我的端点发出跨域请求。除了IE11,我在任何浏览器中都没有问题。 Chome、FF 所有版本等都可以正常工作。我没有设置任何自定义标头,因此没有预检请求。我也没有使用允许凭据,所以我认为我不需要任何 P3P 标头,但我也尝试过,但没有运气。

我在控制台中收到一条信息消息,上面写着 XMLHTTPRequest for https://xxx required Cross Origin Resource Sharing (CORS)

我可以在网络选项卡中看到 HTTP 响应返回正常,但我的 XMLHTTPRequest 函数返回状态代码为零并且响应正文为空。

我的请求是节点 js 服务器将标头设置如下。我已经厌倦了很多组合,但没有运气。在生产和使用其他浏览器时,我的标题要少得多。

  res.header('Access-Control-Allow-Origin', '*')
  res.header('Access-Control-Allow-Headers', 'Overwrite, Destination, Content-Type, Depth, User-Agent, Translate, Range, Content-Range, Timeout, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Location, Lock-Token, If, Accept, Pragma')
  res.header('Access-Control-Allow-Methods', 'GET, POST')
  res.header('Access-Control-Expose-Headers', 'DAV, content-length, Allow')
  res.header('P3P', `CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI"`)

【问题讨论】:

CORS request with IE11的可能重复 请看我的编辑。这不是重复的,因为我没有使用 withCredentials。 你试过res.header('Access-Control-Allow-Origin', 'https://xxx')吗? OPTIONS 添加到res.header('Access-Control-Allow-Methods', 'GET, POST') 以进行预检,并确保OPTIONS 请求返回有效状态,例如200204 No Content,并且在响应标头中您必须具有@ 987654330@(这应该默认发生,但在开发者工具中仔细检查) 它不执行预检请求,因为我没有设置任何自定义标头。我确实尝试将原点设置为确切的网站原点而不是通配符,但似乎没有什么不同。 【参考方案1】:

移至 IE11 的 JSONP。这就是 facebook 嵌入代码和 IE11 中的许多其他网站所做的。似乎这是一个常见问题。

【讨论】:

以上是关于IE 11 跨域请求的主要内容,如果未能解决你的问题,请参考以下文章

HTTP跨域详解

IE 中的 HTTPS Ajax 请求问题(非跨域)

IE9版本号下面ajax 跨域问题解决

vue axios 跨域请求在ie浏览器 报错 Access-Control-Allow-Headers 列表中不存在请求标头 authorization.

Angular 跨域请求在 Chrome 上有效,在 Firefox 和 IE 上失败

IE8可以从HTTP到HTTPS发布跨域请求吗?