1. ホーム
  2. asp.net

[解決済み] 複数ドメインでのアクセス制御・許可・ログイン

2022-09-15 09:43:37

質問

web.config で、複数のドメインを access-control-allow-origin ディレクティブに複数のドメインを指定したいと思います。私は * . 私はこの構文を試しました。

<add name="Access-Control-Allow-Origin" value="http://localhost:1506, http://localhost:1502" />

これ

<add name="Access-Control-Allow-Origin" value="http://localhost:1506 http://localhost:1502" />

これ

<add name="Access-Control-Allow-Origin" value="http://localhost:1506; http://localhost:1502" />

そしてこれは

<add name="Access-Control-Allow-Origin" value="http://localhost:1506" />
<add name="Access-Control-Allow-Origin" value="http://localhost:1502" />

のように記述しますが、どれもうまくいきません。 正しい構文は何ですか?

どのように解決するのですか?

1つしかない Access-Control-Allow-Origin レスポンスヘッダはひとつだけで、そのヘッダはひとつの origin 値しか持つことができません。したがって、これを動作させるためには、以下のようなコードが必要です。

  1. を取得する。 Origin リクエストヘッダを取得します。
  2. originの値がホワイトリストの値の1つであるかどうかを確認します。
  3. 有効であれば Access-Control-Allow-Origin ヘッダをその値で設定します。

web.configのみで行う方法はないと思います。

if (ValidateRequest()) {
    Response.Headers.Remove("Access-Control-Allow-Origin");
    Response.AddHeader("Access-Control-Allow-Origin", Request.UrlReferrer.GetLeftPart(UriPartial.Authority));

    Response.Headers.Remove("Access-Control-Allow-Credentials");
    Response.AddHeader("Access-Control-Allow-Credentials", "true");

    Response.Headers.Remove("Access-Control-Allow-Methods");
    Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
}