2

cors で正規表現を使用しようとしています。cors がすべて (*) または正確なドメインであることはあり得ないことを何度も読みました。Access-Control-Allow-Origin ワイルドカード サブドメイン、ポート、およびプロトコル. ただし、これは矛盾しているようです: http://www.cameronstokes.com/2010/12/26/cross-origin-resource-sharing-and-apache-httpd/。上記のリンクを実装しようとしたが成功しなかったため、誰かが明確にし、正規表現を使用できる場合は簡単な例を提供してください。

使用したい正規表現は

    ^http\://\blocal-.*\b\.testing-test:10005$

正規表現を確認したところ、生成された URL と一致しています。次のように、Apache2.conf に提案されているように SetEnvIF および Header set 行を追加しました (これは正しいですか?)。

    SetEnvIf Origin "^http\://\blocal-.*\b\.mycompany-it:10005$" 

    AccessControlAllowOrigin=$0 Header add Access-Control-Allow-Origin %

    {AccessControlAllowOrigin}e env=AccessControlAllowOrigin

次に何をすべきか迷っています。うまくいきません。よろしくお願いします。

4

1 に答える 1

4

Access-Control-Allow-Origin ヘッダーには、ワイルドカード「*」または正確な URL のみを使用できます。これを行う 1 つの方法は、最初にリクエストから Origin ヘッダーの値を取得することです (これはサーバーによって異なりますが、1 つのサンプルは次のようになりますrequest.headers['Origin'])。

次に、リクエスト Origin の値で正規表現チェックを行います。リクエストのオリジンが許可された正規表現でチェックに合格した場合は、Access-Control-Allow-Origin の値をリクエストのオリジンの値に設定するだけです (サンプル: response.headers['Access-Control-Allow-Origin'] = request.headers['Origin'])。このように、厳密な URL であるアクセス制御のルールに違反していませんが、サーバーが複数の異なる許可されたオリジンを受け入れることも許可しています。

于 2017-05-19T13:54:56.533 に答える