2011-08-16 9 views
1

XHRクロスドメインリクエストの作成方法 - 「Script Tag Hack」を試しましたが、動作しないか、間違っています。助言がありますか? [index.htmlを】クロスドメインXHRリクエストの作成方法

<head> 
<script type="text/javascript" src="https://evilDomain/xhrTest.js"></script> 
</head> 

ドメインB: [xhrTest.js]

Iは

ドメインA B.

からドメインAにスクリプトを呼び出したいです
$.ajax({ 
     url: "https://evilDomain/processRequest", 
     success: function(result){ 
     alert(result); 
     } 
}); 

編集

私はまた、このようにJSONPを使用しようとしました:私は、Tomcatコンテナを使用してい

$.ajax({ 
     url: "https://evilDomain/processRequest", 
     dataType: "jsonp", 
     success: function(result){ 
     alert(result); 
     } 
}); 

アクセス制御 - 許可 - 起源ヘッダに接続されている解決策はありますか?

答えて

1

通常、サーバーに依頼してください。

もう1つの選択肢は、他の人があなたのために(Yahooのサービスなど)行うことです。

あなたの問題は、ドメインBのコードはまだドメインのコンテキストで実行されていることです。 ドメインAとしてコードが実行されているため、ドメインBであっても、https://evilDomain/processRequestはまだ読み取れません。

+0

ええ、きれいな(ハックなしで)解決策は私のために要求するサーバーを使用しています。答えをありがとう。 – smas

1

JSONPを使用するか、独自のドメインのサービスを使用して、サーバー側の他のドメインを呼び出し、必要なものを手に入れます。

+0

私はそれについて考えましたが、ログインフォームを作成しています。 JSONPを使用するときは、URLにすべてのパラメータを渡す必要があります – smas

+0

なぜURLに渡すのですか? GETではなくPOSTを実行します。 – nickytonline

+0

wikipediaは(http://en.wikipedia.org/wiki/JSONP)スクリプトタグを使用してスクリプトをインポートする必要があるため、GETです。 POSTであなたのバージョンを提案できますか? – smas

1

ドメインB JSがページに含まれているため、ドメインAに由来するページから実行されるため、問題です。このクロスドメインを行うには、データ応答を「スクリプト」として要求し、そこから解析する必要があります。

3

はい、Access-Control-Allow-Originヘッダーをサーバーの応答に追加できます。これにより、ドメイン間のリクエストを行うことができます。

必要に応じてアクセス制御 - 許可 - ヘッダアクセス制御が-メソッドを許可してあなたはその後、さらにカスタマイズすることができます。

詳細はhttps://developer.mozilla.org/en/HTTP_access_control

+0

ええ、それは私のための良い解決策ではありません - それはほとんどのブラウザ(ie6でも)と互換性があります – smas

+1

JSONPはあなたの唯一のオプションです。 –

+0

でもログインフォームを行う必要があるので、URLに資格情報を渡してはいけません – smas

関連する問題