0

JavaScriptAPIサービスを開発しています。メインのhtmlページは次のようになります。

<html>
<head>
  <script type="text/javascript" src="scripts/logic.js"></script>
  <script type="text/javascript" src="scripts/jquery-1..."></script>
  <script type="text/javascript" src="http://mydomain/api/main.js"></script>
</head>
...
</html>

main.jsスクリプトで、mydomainから別のスクリプトをロードします。スクリプトタグ([script .. src = "http://mydomain/api/getsomedata.js?callback_id = 3434&someparams = ..."])を追加して実行しています。ロードされたスクリプトは、APIコールバック関数MyApi.processCallback(...)をすぐに呼び出します。すべて問題なく動作します。

しかし、ローカルファイル(logic.js)から別のmydomainスクリプトを読み込もうとすると、非常に奇妙な状況が発生します。すべてのスクリプトグローバルオブジェクトが未定義です。前の呼び出し中に表示されたMyApiオブジェクトまたはjQuery$オブジェクトはありません。そのため、MyApiコールバック関数を呼び出すことができません。

おそらくそれはセキュリティ制限のためです。Anti-XSS、または同様のもの。すべてのGoogleJavaScriptAPIと同様に、X-XSS-Protectionヘッダーを追加しようとしました。しかし、それは役に立ちませんでした。

IFRAMESは使用していません。

多くのクロスサイトJavaScriptAPI(Google Maps APIなど)が同じアイデアで機能しているため、問題は正確に解決できます。

4

1 に答える 1

0

スクリプトで何が起こっていますか?

ドメインへのAjaxコールバックを実行している場合、スクリプトは同一生成元セキュリティエラーで失敗します。別のドメインからサーバーと通信する必要がある場合は、JSONPを使用して通信する必要があります。現代のブラウザのみを使用している場合は、CORSを使用することができます。

于 2010-08-12T17:15:57.863 に答える