ASP.NET Core で CORS を有効にする方法 質問する

ASP.NET Core で CORS を有効にする方法 質問する

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

属性は、次の型をパラメータとしてEnableCors受け入れます:policyNamestring

// 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);

ASP.NET Core Web API でCORSを構成する意味policyNameと方法を教えてください。

ベストアンサー1

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();
}

おすすめ記事