web-dev-qa-db-ja.com

URL書き換え-クロスドメインJavaScript

別のドメイン-site.domain1.comからコンテンツを起動する必要があるサイトcontent.domain2.comがありますが、これを直接実行するとクロスドメインJSの問題が発生します。

基本的に、site.domain1.comのコンテンツはdomain2のコンテンツであるとdomain1.comを考える必要があります。 IIS7でのURL書き換えが答えかもしれないと読んだことがありますが、これは可能ですか?

2
U01SFA3

あなたが持っている問題は CORS で解決されます:

Cross-Origin Resource Sharing標準は、サーバーがWebブラウザーを使用してその情報を読み取ることを許可されているオリジンのセットを記述できるようにする新しいHTTPヘッダーを追加することにより機能します。さらに、ユーザーデータに副作用を引き起こす可能性のあるHTTPリクエストメソッド(特に、GET以外のHTTPメソッド、または特定のMIMEタイプでのPOSTの使用)については、ブラウザが「プリフライト」することを規定しています。 HTTP OPTIONSリクエストメソッドを使用してサーバーからサポートされているメソッドを要求し、サーバーから「承認」されると、実際のリクエストを実際のHTTPリクエストメソッドで送信します。サーバーは、「資格情報」(CookieおよびHTTP認証データを含む)をリクエストとともに送信する必要があるかどうかをクライアントに通知することもできます。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

サーバーからのヘッダーを、他のOriginドメインを信頼することを要求したブラウザーに伝える応答に追加する必要があります。そのリンクは、プロセスと必要なヘッダーを確認します。次のようなヘッダーを追加します。

Access-Control-Allow-Origin "*";
Access-Control-Allow-Methods "GET, POST, PUT, OPTIONS, DELETE";
Access-Control-Allow-Headers "Authorization,Content-Type,Accept";
Access-Control-Allow-Credentials "true";

最初のヘッダーは、サイトのJSコードからのクロスサーバーリクエストを許可するようブラウザに指示します。このアプローチにはセキュリティ上の懸念があるため、そもそもこれは直接許可されません。

3
jmq

URLだけを書き換えても問題は解決しません。書き換えは、他のサイトのURLではなく、ローカルURLのみを書き換えることができます。

「逆プロキシ」の概念を探しているかもしれません。つまり、Webサーバーが別のサイトからコンテンツを取得し、独自のドメインで動的に再公開するようにします。次に、JavaScriptはクロスサイトの問題なしにこのデータにアクセスできます。

記事はこちら IIS、URL Rewrite、およびARRを使用したリバースプロキシのセットアップについて。

クロスドメインAJAX を調べることもできます。 JSONPまたはAccess-Control-Allow-Originが適切なオプションのようです。

0