如何在ASP.NET Core MVC中启用跨源请求(CORS)

时间:2015-03-17 13:37:38

标签: c# asp.net-core cors asp.net-core-mvc

我想在使用ASP.NET Core MVC构建的API上启用CORS,但所有当前文档都引用该框架的早期版本。

6 个答案:

答案 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"));