我想在使用ASP.NET Core MVC构建的API上启用CORS,但所有当前文档都引用该框架的早期版本。
答案 0 :(得分:29)
关于新Cors功能的注释非常简单,但通过查看新的类和方法,我能够在我的解决方案中使用它。我的Web API startup.cs 看起来像这样。您可以使用新的AddCors
类了解如何构建原点和策略。并使用UseCors
和 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();
}
方法启用CORS。
[EnableCors("mypolicy")]
[Route("api/[controller]")]
您还可以使用新属性
在控制器中引用策略<item name="android:windowContentOverlay">@null</item>
答案 1 :(得分:19)
我使用以下代码使用它:
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
{
// ...
}
-
更新为所有请求配置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。
答案 2 :(得分:8)
最近的RC2
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();
}
答案 3 :(得分:3)
目前正在开发对CORS的支持。以下问题是跟踪: https://github.com/aspnet/Mvc/issues/498
更新(2015年3月28日):
此功能已签入,应在下一版本中提供。
答案 4 :(得分:3)
cs1929方法services.ConfigureCors(...)不再存在。它与AddCors结合使用:
services.AddCors(options =>
options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin()));
答案 5 :(得分:1)
安装:Microsoft.AspNetCore.Cors
在配置方法中:
app.UseCors(builder =>
builder.WithOrigins("http://some.origin.com"));