internet-explorer - 在任何低于 10 的 IE 版本上,AngularJS 拒绝 XMLHttpRequest 访问

标签 internet-explorer angularjs cors

在任何版本早于 10 的 Microsoft IE 浏览器上查看我的应用程序时,我在控制台上收到以下奇怪的错误:

console screen shot from the developer console, the view doesn't get resolved due to this error

我尝试在 AngularJS 库之前添加以下 JavaScript 代码来取消控制台:

console.log = function(){};
window.console = {log: function(){}};

这没有什么区别。 IE 10 中的相同错误显示为:

SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.

可能我试图从 API 获取“/me”,以检查用户是否经过身份验证或访客。

基本上。每次服务器给出除 2XX 或 3XX 之外的响应时消除那些烦人的控制台错误会很棒!

更新:这似乎与通过不同的子域(CORS)访问 API 有关;

最佳答案

通过 Google AngularJS 小组经验丰富的 ng-dev 的指导,我能够实现的解决方案是 xDomain library .

设置非常简单,只需将 proxy.html 文件放在 API 的根目录下,并使用正则表达式/字符串表示允许的来源('master'),以及对前端脚本的引用,然后从您的前端脚本('master')指向此文件。

它的工作原理是在 iframe 中打开 proxy.html 文件,并使用 postMessage 与 CORS 资源进行通信。

与 $http 和 $resource 一起使用就像一个魅力。

您还可以通过将脚本放置在所有 JavaScript 库之上来维持普通浏览器的正常功能:

<!--[if lte IE 9]>
<script src="xdomain.js" slave="http://example.org/proxy.html"></script>
<![endif]-->

关于internet-explorer - 在任何低于 10 的 IE 版本上,AngularJS 拒绝 XMLHttpRequest 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18706208/

相关文章:

javascript - 使用 .splice 从数组中删除一个项目是删除多个对象

java - 在 Angular 4 中将数据发送到 JAVA post REST API 时出现 CORS 错误

CSS 菜单无法在 IE 中正确呈现

css - CSS 中的这种样式来自哪里?

javascript - 从 Javascript 数组加载下拉列表并使用 angularjs 设置选定值的最简单方法

angularjs - 请求的资源上不存在 'Access-Control-Allow-Origin' header 。 NodeJS 和 AngularJS 应用程序

go - 将 CORS header 添加到 gqlgen 默认示例中?

css - 如何为div设置透明颜色?它应该适用于 Firefox 和 IE

javascript - IE10-使用z-index的透明叠加

javascript - AngularJS 正确显示验证消息