2009-11-19 8 views
10

XMLHttpRequest(実際にはjQuery)を使用するWebサイトがあります。私はまた別のサイトを同じサーバー上で実行しています。これはXHRリクエストをそのサイトに戻すスクリプトファイルを提供します。XMLHttpRequestを、そのポートからロードされたスクリプトファイルとは異なるポートで使用できますか?

http://mysite:50000/index.html

<script src="http://mysite:9000/otherscript.js"></script> 

http://mysite:9000/otherscript.jsを含ん問題がある

$.ajax({ 
    url: 'http://mysite:9000/ajax/stuff' 
}); 

含まれています - これは動作しません。ロードされたスクリプトからのAJAXリクエストはエラーメッセージなしで失敗します。私が見つけたことから、これは古い同じ起源の方針です。私が両方のサイトを管理していることを考えれば、私はこの仕事をするために何ができるのでしょうか? "document.domain"トリックはXMLHttpRequestのためのことをしていないようです。

答えて

10

これはXHRでは不可能です。同じドメインポリシーは、同じホスト、同じポート、同じプロトコルで非常に制限的です。ごめんなさい!あなたはそれを動作させるために、他のトリック(iframe、タイトル操作など)に頼らなければなりません。

+0

「タイトル操作」トリックとは何ですか? – EMP

+0

JavaScriptに署名している場合は、FFでこれを行うことができます。 – bmargulies

+2

http://dannythorpe.com/2008/07/28/cross-domain-transport-with-windowname/およびhttp://orensol.com/2009/06/07/cross-domain-ajax-calls-andを参照してください。 -iframe-communication-how-to /の例を示します。 jQueryとDojoのアドオンがあり、これをうまくまとめます。 – nitzmahone

10

Access-Control-Allow-Originヘッダーを追加することでこれを行うことができます。 あなたは、PHPに、これはuのためにトリックを行う必要があります

response.writeHead(200,{'Access-Controll-Allow-Origin':' http://example.com'}); 

header("Access-Control-Allow-Origin: http://example.com"); 

かでのNode.jsを使用している場合は、それは常に私はPHPで同様の問題を解決し

0

私の作品サービス私は現在、PHPの解決策がこれに直接関係しているかどうかはわかりませんが、単一行のプロキシPHPページを作成することで、SimpleProxy.php:

<?php 
echo file_get_contents('http://localhost:4567'); 
?> 

私のXMLHttpRequestでは、「http://localhost:4567」の代わりに「SimpleProxy.php」を使用しています。これは、実際には自分の.jsコードと同じドメインにリクエストを送信します。

関連する問題