たとえば、デーモンが実行されているポート8080にAJAXリクエストを送信する必要があります。
ドメイン、サブドメイン、またはポート番号を越えてPOST
情報を使用することはできません。ただし、デーモンand要求サイトの両方にアクセスできる場合はJSONPを使用できます。データを返す必要がある場合、daemon
はcallback
クエリパラメータをサポートし、適切にフォーマットされた状態で返す必要があります。
情報をデーモンに渡します。
$.getJSON('http://domain.com:8080/url/here?callback=?', {
key: 'value',
otherKey: 'otherValue'
}, function(data){
// Handles the callback when the data returns
});
デーモンがcallback
パラメーターを処理することを確認してください。たとえば、callback=mycallback
デーモンからの戻り(ページに書き込まれる唯一のもの)は次のようになります。
キー/値ペアの場合:
mycallback( {'returnkey':'returnvalue', 'other':'data' });
配列の場合:
mycallback( [1,2,3] );
JSONPまたは同様のメカニズムが設定されていない場合、jQueryを使用してドメイン間で通信することはできません。
これにより、 Same Origin policy が破られます。同じドメインを使用している場合でも、別のポートを使用することはできません。
JSONPを Doug 提案として使用できます。
または、別の可能な回避策として、非常に単純な reverse proxy (Apacheを使用している場合は mod_proxy を使用)を設定できます。これにより、AJAXリクエストで相対パスを使用できますが、HTTPサーバーは「リモート」ロケーションへのプロキシとして機能します。
mod_proxy でリバースプロキシを設定するための基本的な設定ディレクティブはProxyPassです。通常、次のように使用します。
ProxyPass /ajax/ http://www.localhost:8080/
この場合、/ajax/test.xml
jQueryを使用しますが、実際にはサーバーはhttp://www.localhost:8080/test.xml
内部的に。
IISを使用している場合は、 Managed Fusion URL Rewriter and Reverse Proxy を使用して、リバースプロキシをセットアップできます。
同じボックス、異なるポートにある場合でも、これは異なるオリジンとしてカウントされます。
FireFox 3.5以降のようなほとんどの新しいブラウザをターゲットにしている場合は、Access-Control
ヘッダーを別のポートのアプリケーションに追加し、デフォルトのアプリプールからの呼び出しを許可します。アクセス制御ヘッダーに関する情報は、ここにあります: https://developer.mozilla.org/en/HTTP_access_control
IEはそれも実装しています(別のACTIVEXコントロールを使用しているのに、なぜそうですか?): http://blogs.msdn.com/ie/archive/2009/01/14/completing-access-control-support -for-xdomainrequest.aspx および http://msdn.Microsoft.com/en-us/library/cc288060(VS.85).aspx