1

CORS のコンテキストで、FQDN を含む Origin ヘッダーを常に送信するようブラウザに強制することは可能ですか? ターゲット サービスでは、Origin: http://website.intranet.example.com/page.html代わりに が表示されOrigin: http://website/page.htmlます。

例が示すように、これはイントラネット環境であり、目標は、ドメイン マシン ( *.intranet.example.com) でホストされているすべてのページが、同じドメインでホストされているサービスに対してクロス オリジン リクエストを作成できるように、サブドメインごとにリクエスト オリジンをフィルタリングすることです。問題は (もしそうなら) イントラネット サイトが一般的にhttp://website/、接続固有の DNS サフィックスによって暗示される残りの部分と同様にアドレス指定されることです:intranet.example.comドメイン ポリシーによって設定されます。

私が考えることができる唯一の回避策は、「醜い URL」の副作用を最小限に抑えて、すべての「元の」ページに正規の URL を強制する (つまり、にリダイレクト//fooする) ことを要求することです。//foo.intranet.example.com

4

1 に答える 1

0

CORS コンテキストでは、短いドメイン名と完全修飾ドメイン名で同じ Origin 値を取得しようとするのではなく、サーバーがリクエストの続行を許可するかどうか、または Origin 値が存在するかどうかに焦点を当てることができます。

クロス オリジン リクエストを許可するために、応答サーバーは適切な Access-Control-Allow-Origin レスポンス ヘッダーのみで応答する必要があると仮定すると、ワイルドカード値で応答して、任意の受信オリジンが問題ないことを示すことができます。

Access-Control-Allow-Origin: *

クライアントがワイルドカードの代わりに特定のドメインを必要とする場合、Origin の値に関係なく、リクエストの続行を許可することを選択した場合は、Web サーバーに着信 Origin ヘッダーの値をエコー バックさせることができます。

たとえば、Apache では、SetEnvIf および Header モジュールを使用して、元の値が特定の正規表現と一致する場合にその値を含む環境変数を書き込み、その変数が存在する場合は、環境変数の値を含む Access-Control-Allow-Origin 応答ヘッダーを書き込みます。

SetEnvIf Origin "(.+)" origin_header_value=$1
Header set Access-Control-Allow-Origin "%{origin_header_value}e" env=origin_header_value

この方法で Web サーバーに Access-Control-Allow-Origin ヘッダーを含めるかどうかをより細かく制御する必要がある場合は、.+.

于 2015-11-04T06:58:53.670 に答える