1. ホーム
  2. c#

[解決済み】ASP.NET CoreでCORSを有効にする方法

2022-04-04 12:44:43

質問

ASP.NET Core Web APIでクロスオリジンリソース共有を有効にしようとしていますが、行き詰っています。

EnableCors 属性は policyName タイプの string をパラメータとする。

// Summary:
//     Creates a new instance of the Microsoft.AspNetCore.Cors.Core.EnableCorsAttribute.
//
// Parameters:
//   policyName:
//     The name of the policy to be applied.
public EnableCorsAttribute(string policyName);


は何を意味しているのでしょうか? policyName の意味と、どのように設定すればよいかを説明します。 CORS をASP.NET Core Web APIで使用できますか?

解決方法を教えてください。

ASP.NET Core 6の場合。

var  MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddCors(options =>
{
    options.AddPolicy(name: MyAllowSpecificOrigins,
                      builder =>
                      {
                          builder.WithOrigins("http://example.com",
                                              "http://www.contoso.com");
                      });
});

// services.AddResponseCaching();

builder.Services.AddControllers();

var app = builder.Build();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

app.UseCors(MyAllowSpecificOrigins);

app.UseAuthorization();

app.MapControllers();

app.Run();

を参照してください。 公式ドキュメント をご覧ください。

ASP.NET Core 3.1および5.0用です。

アプリケーション起動時に、CORS ポリシーを ConfigureServices メソッドを使用します。

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
    {
        builder.WithOrigins("http://example.com")
               .AllowAnyMethod()
               .AllowAnyHeader();
    }));

    // ...
}

CorsPolicyBuilderbuilder を使用すると、ニーズに合わせてポリシーを設定することができます。これで、この名前を使用して、コントローラやアクションにポリシーを適用できるようになりました。

[EnableCors("MyPolicy")]

あるいは、すべてのリクエストに適用する。

public void Configure(IApplicationBuilder app)
{
    app.UseCors("MyPolicy");

    // ...

    // This should always be called last to ensure that
    // middleware is registered in the correct order.
    app.UseMvc();
}