web-dev-qa-db-ja.com

ASP.NET Core MVCでクロスオリジンリクエスト(CORS)を有効にする方法

ASP.NET Core MVCで構築されたAPIでCORSを有効にしたいのですが、現在のドキュメントはすべて、そのフレームワークの以前のバージョンを参照しています。

33
James White

新しいCors機能に関するメモは非常に軽いですが、新しいクラスとメソッドを見ることで、ソリューションで機能させることができました。私のWeb API startup.csは次のようになります。新しいCorsPolicyクラスを使用して、オリジンとポリシーを構築する方法を確認できます。そして、AddCorsおよびUseCorsメソッドでCORSを有効にします。

 public void ConfigureServices(IServiceCollection services)
 {
     services.AddMvc();
     //Add Cors support to the service
     services.AddCors();

     var policy = new Microsoft.AspNet.Cors.Core.CorsPolicy();

     policy.Headers.Add("*");    
     policy.Methods.Add("*");          
     policy.Origins.Add("*");
     policy.SupportsCredentials = true;

     services.ConfigureCors(x=>x.AddPolicy("mypolicy", policy));

 }


 public void Configure(IApplicationBuilder app, IHostingEnvironment  env)
 {
     // Configure the HTTP request pipeline.

     app.UseStaticFiles();
     //Use the new policy globally
     app.UseCors("mypolicy");
     // Add MVC to the request pipeline.
     app.UseMvc();
 }

次のような新しい属性を使用して、コントローラーのポリシーを参照することもできます

[EnableCors("mypolicy")]
[Route("api/[controller]")]  
29
alistair

私は次のコードを使用して動作させました:

_public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()));
}
_

必要に応じて、AllowAnyHeader()AllowAnyMethod()を構成アクションにチェーンできます。

完全なアプリ用に構成するには:

_public void Configure(IApplicationBuilder app)
{
    app.UseCors("AllowAll");
}
_

または、単にコントローラーの場合:

_[EnableCors("AllowAll")]
public class HomeController : Controller
{
   // ...
}
_

-

更新:allリクエストに対するCORSの設定は少し簡単にできます:

_public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddCors();
}

public void Configure(IApplicationBuilder app)
{
    app.UseCors(builder =>
    {
        builder.WithOrigins("http://some.Origin.com")
               .WithMethods("GET", "POST")
               .AllowAnyHeader();
    });
}
_

詳細については、 docs を参照してください。

19
Henk Mollema

最新のRC2 of ASP.NET Core。

NuGetパッケージは

"Microsoft.AspNetCore.Owin": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Cors": "1.0.0-rc2-final",

Startup.csで

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddCors();
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    app.UseCors(builder =>  builder
    .AllowAnyOrigin());
    app.UseMvc();
}
8
Blaise

cs1929メソッドservices.ConfigureCors(...)はもう存在しません。 AddCorsに結合されます。

services.AddCors(options => 
    options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin()));
3
Otabek Kholikov

CORSのサポートは現在開発中です。次の問題はそれを追跡しています: https://github.com/aspnet/Mvc/issues/498

更新(2015年3月28日)
この機能はチェックインされており、次のリリースで利用可能になるはずです。

3
Kiran Challa

インストール:Microsoft.AspNetCore.Cors

構成方法で:

        app.UseCors(builder =>
                builder.WithOrigins("http://some.Origin.com"));
1
Oleg