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
请求返回有效状态,例如200
或204 No Content
,并且在响应标头中您必须具有@ 987654330@(这应该默认发生,但在开发者工具中仔细检查)
它不执行预检请求,因为我没有设置任何自定义标头。我确实尝试将原点设置为确切的网站原点而不是通配符,但似乎没有什么不同。
【参考方案1】:
移至 IE11 的 JSONP。这就是 facebook 嵌入代码和 IE11 中的许多其他网站所做的。似乎这是一个常见问题。
【讨论】:
以上是关于IE 11 跨域请求的主要内容,如果未能解决你的问题,请参考以下文章
vue axios 跨域请求在ie浏览器 报错 Access-Control-Allow-Headers 列表中不存在请求标头 authorization.