SOで他の同一生成元ポリシーのトピックを読みましたが、ローカルファイルシステムに関連するソリューションは見ていません。
ローカルで提供する必要のあるWebアプリ(大まかな意味で)があります。ユーザーがページを読み込んだ後、ウェブページで何をしているかに応じて、大量のデータを読み込もうとしています。Firefox 3.5およびIE8では、jQueryのAJAX()およびGetScript()メソッドを使用してこれを行うことができますが、Chromeでは、同一生成元ポリシーのためにこれは失敗します。
XMLHttpRequest
ロードできませんfile://test/testdir/test.js
。オリジンnull
は許可されていませんby Access-Control-Allow-Origin
。
これは私が次のような単純なことをしたときに起こります
$.getScript("test.js");
これはIEとFirefoxで完全に機能します。
これについてたくさん読んだ後、私はドキュメントの先頭に直接書いてみることにしました。Chromeのコンソールで、次のように入力しました。
var head = document.getElementsByTagName("head")[0];
var script =document.createElement('script');
script.id = 'uploadScript';
script.type = 'text/javascript';
script.src = "upload.js";
head.appendChild(script);
これは、コンソールに貼り付けると正常に機能し<script...test.js</script>
ます。要素がヘッドに追加され、評価され、コンテンツがDOMに読み込まれます。
このコードを関数呼び出しに入れるまで、これは成功したと思いました。同じ正確なコードを関数から呼び出すと、要素がに追加されますが、JavaScriptファイルは評価されません。理由がわかりません。Chromeのコンソールを使用して、要素を追加しているメソッドで実行を停止し、上記のコードを実行すると、Chromeはそれを評価しません。ただし、実行の一時停止を解除してまったく同じコードを実行すると(コンソールウィンドウに貼り付ける)、機能します。私はこれを説明するのに途方に暮れています。誰かがこれに以前に対処したことがありますか?
私は次のSOの投稿を読みましたが、私が抱えている問題については説明していません。
同一生成元ポリシーを回避する方法
XMLHttpRequestOriginnullは許可されていませんAccess-Control-Allow-Originforfile:/// to file:///(サーバーレス)
クロスサイトXMLHttpRequest
繰り返しになりますが、私の最後の手段は、ウェブページの読み込み時にすべてのデータを読み込むことです。これにより、アプリのユーザーの90%にとって不要な、ウェブページの読み込みに最大10秒の遅延が発生する可能性があります。
提案/代替案をありがとう!!!