在任何版本早于 10 的 Microsoft IE 浏览器上查看我的应用程序时,我在控制台上收到以下奇怪的错误:
我尝试在 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/