Microsoft IE 10より前のバージョンのブラウザでアプリケーションを表示しているときに、コンソールで次の奇妙なエラーが表示されます。
AngularJS libの前に次の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ライブラリ です。
セットアップは非常に簡単です。許可されたOrigin( 'master')の正規表現/文字列と、フロントエンドのスクリプトへの参照を含むproxy.htmlファイルをAPIのルートに配置し、これをポイントします。フロントエンドスクリプト( '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]-->
もちろん、あなたの問題はCORSに関連しています。 IE10は実際のXmlHttpRequestを使用しますが、それ以前はIEは使用していませんでした。たとえば、nginxを使用して、サーバーで{}
ブロック:
location /api {
proxy_pass http://my.server.name:12345/v1;
proxy_redirect off;
}
JQueryでさえXDomainRequestとCORSを完全にサポートしていないことに注意してください。XDRを取得するにはプラグインを追加する必要があります。また、XDRにはCORSに関していくつかの厳しい制限があることに注意してください。