ASP.NET Core MVCで構築されたAPIでCORSを有効にしたいのですが、現在のドキュメントはすべて、そのフレームワークの以前のバージョンを参照しています。
新しい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]")]
私は次のコードを使用して動作させました:
_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 を参照してください。
最新の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();
}
cs1929メソッドservices.ConfigureCors(...)はもう存在しません。 AddCorsに結合されます。
services.AddCors(options =>
options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin()));
CORSのサポートは現在開発中です。次の問題はそれを追跡しています: https://github.com/aspnet/Mvc/issues/498
更新(2015年3月28日):
この機能はチェックインされており、次のリリースで利用可能になるはずです。
インストール:Microsoft.AspNetCore.Cors
構成方法で:
app.UseCors(builder =>
builder.WithOrigins("http://some.Origin.com"));