asp.net core Web API CORS

asp.net core Web APIではデフォルトでCORS (Cross Origin Resource Sharing) がディセーブルになっているため、別サイトからアクセスすると、クライアント側でエラーが発生してしまう。

CORSを有効にするには、Startup.csに以下のような、設定が必要となる。

public IConfiguration Configuration { get; }
public Startup(IServiceConfiguration configuration) {
  Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
  // CORSポリシーの追加
  services.AddCors(options =>
  {
    options.AddPolicy("AllowAllOriginsPolicy", // 名前は何でも良い
      builder =>
      {
        // この例では全ホストから受付け可能(どうせ、FWでブロックされるし・・・)
        // ホストを制限するには、.WithOriginsメソッドを使用
        // ヘッダを制限するには、.WithHeadersメソッドを使用
        // HTTPメソッドを制限するには、.WithMethodsメソッドを使用
        builder.AllowAnyOrigin();
       });
  });
  services.AddControllers();
}

↑の例では、全てのホストからの接続を許可している。
特定のホストだけ許可するには、.WithOriginsを使用する。

    builder.WithOrigins("http://boo.foo.com","http://www.boo.foo.com");

後は、Configuraメソッドの中で、全てのエンドポイントに適用するか、エンドポイント毎に適用するかによって、指定が異なる。
全てのエンドポイントに適用するには、Configureメソッドの中で、

  app.UseCors();

を呼び出す。

詳しくは、

https://docs.microsoft.com/ja-jp/aspnet/core/security/cors?view=aspnetcore-3.1

を参照。

takezou について

ソフトウェア開発会社(ITと言う言葉は大嫌い)で働く、元技術者。 未だに、社内システム位は作ってますが・・・ プログラミング言語はC#が好き。
カテゴリー: asp.net core, C#, dotnetcore, 技術系 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください