XMLHTTPRequestの外部Webサイトを指定する方法
-
03-07-2019 - |
質問
javascriptでXMLHTTPRequestを使用する場合、.jsファイルがホストされているWebサイトではなく、外部Webサイトに送信したい。現在のサーバーのtest.phpに送信するには、
を使用しますrequest.open("POST", "test.php", true);
2番目の引数については、別のWebサイトに送信する方法を教えてください。 " example.com/test.php"現在のサーバーでファイルを探し、" http://example.com/test.php"完全に失敗したようです。
解決
セキュリティ上の理由からできません。 JavaScriptについては、同じ発信元ポリシーをご覧ください。
ブラウザのバグやコーナーケースを悪用する回避策がいくつかありますが、それらの使用は推奨されません。
最良のアプローチは、Ajaxリクエストを受信し、次にHTTPリクエストを他のサーバーに送信するサーバー側プロキシを使用することです。これは、入力をサニタイズし、送信されるリクエストのタイプと接続されるサーバーをホワイトリストに登録することにより、慎重に実装する必要があります。
他のヒント
これは同じ起源ポリシー、私の友人の悪い例のように聞こえます:)
(大部分)XmlHttpRequestを使用して外部Webサイトからデータを取得することはできません。ただし、できることは、SCRIPTタグを動的に作成し、外部アドレスを参照することです。 jQuery は、ajax処理の一部としてこれを機能的にラップします。
本当にできます。ただし、どのブラウザでもない。
Internet Explorer 8.0には、 XDomainRequest 、クロスドメインリクエストを可能にするオブジェクト。最初に" *"でAccess-Control-Allow-Originヘッダーを送信することにより、サーバー上のこのオブジェクトで行われた要求を適切に処理する必要があります。またはリクエスタのドメイン名。
とにかくハッキングをしているので、最初にIE8でそれを使用してみませんか?
サーバーを制御できる場合、このヘッダーをHTTP応答で使用できますが、すべてのブラウザーで機能するとは限りません。
Access-Control-Allow-Origin: *