2009-05-04 8 views
3

javascriptでXMLHTTPRequestを使用する場合は、.jsファイルがホストされているWebサイトではなく、外部のWebサイトに送信します。現在のサーバー上でtest.phpをするためにそれを送信するには、私はXMLHTTPRequestの外部Webサイトを指定する方法

request.open("POST", "test.php", true); 

を使用しますが、2番目arguemntのために、どのように私は別のウェブサイトに送信します。 "example.com/test.php"は現在のサーバー上のファイルを検索し、 "http://example.com/test.php"は完全に失敗すると見なします。

+0

質問を明確にするために、JSファイルがどこにホストされているかは関係ありません。重要なことは、あなたのJSファイルを参照するPAGE *がどこにホストされているかです。 *それは同じ起源を決定するものです。 – EricLaw

答えて

7

Same Origin Policyの悪い場合のように聞こえるないセキュリティ上の理由から。 JavaScriptの場合はsame origin policyをご覧ください。

ブラウザのバグやコーナーケースを悪用するいくつかの回避策がありますが、使用することはお勧めしません。

ベスト・アプローチは、Ajax要求を受け取り、別のサーバーにHTTP要求を送信するサーバー側プロキシを使用することです。これは、送信された要求の種類と、接続されているサーバーの入力とホワイトリストをサニタイズすることによって慎重に実装する必要があります。

6

これは私の友人:)することができます

1

ほとんどの場合、XmlHttpRequestを使用して外部Webサイトからデータを取得することはできません。しかし、あなたができることは、動的にSCRIPTタグを作成し、外部アドレスを参照することです。 jQueryは、これをajax処理の一部として機能的にラップします。

1

本当にできます。どんなブラウザでもない。

Internet Explorer 8.0には、ドメイン間の要求を可能にするオブジェクトであるXDomainRequestがあります。 Access Control-Allow-Originヘッダーを最初に "*"またはリクエスタドメイン名で送信して、サーバー上でこのオブジェクトで行われた要求を適切に処理する必要があります。

とにかくあなたは何かハッキーなことをやっているので、まずIE8で使ってみませんか?

1

サーバーを制御できる場合は、HTTP応答でこのヘッダーを使用できますが、すべてのブラウザーでは機能しないことがあります。

Access-Control-Allow-Origin: * 
関連する問題