在ASP.Net 5 / Core中启用跨源资源共享(CORS)

时间:2016-01-25 09:14:46

标签: asp.net-core asp.net-core-mvc

如何将CORS标头添加到我的MVC6应用程序?我对全球和每个行动感兴趣。

看起来ASP.Net vNext / 5 / Core已经发生了一些变化,因此针对不同版本的问题有不同的答案。我正在使用RC1。

我已经尝试了这个“How to enable CORS in ASP.NET Core”,但是来到var policy = new Microsoft.AspNet.Cors.Core.CorsPolicy();“Core”命名空间不存在。

在“How do you enable cross-origin requests (CORS) in ASP.NET 5 & MVC 6?”中尝试了答案,但方法/扩展方法services.ConfigureCors不存在。

最后的SO答案与this blog post相同,后者也说首先安装Microsoft.AspNet.Cors(Install-Package Microsoft.AspNet.Cors)。但这样做会让事情变得更糟,那么services.AddCors()由于某种原因不存在。

Enable cross-origin requests (CORS) in ASP.NET 5 & MVC 6”说要安装不存在的“Microsoft.AspNet.Cors.Core”,并且using Microsoft.AspNet.Builder;没有帮助。

enter image description here

2 个答案:

答案 0 :(得分:2)

您需要添加预发布版本:

Install-Package Microsoft.AspNet.Cors -PreRelease

在Startup.cs中的ConfigureServices下添加以下内容:

services.AddCors(options =>
{
    options.AddPolicy("AllowFromAll",
        builder => builder
        .WithMethods("GET", "POST")
        .AllowAnyOrigin()
        .AllowAnyHeader());
});

如果要全局添加,请将其放在configure:

app.UseCors("AllowFromAll");

如果您需要每个控制器/操作,您可以使用以下内容装饰它们:

[EnableCors("AllowFromAll")]

关于cors的文档中有更多信息,供您参考:
http://docs.asp.net/en/latest/security/cors.html

答案 1 :(得分:0)

在ASP.NET Core 1.0版本中,我必须将以下内容添加到Startup.cs中的ConfigureServices,以使全局CORS配置全局工作且没有属性:

services.AddMvc(options =>
{
    options.Filters.Add(new CorsAuthorizationFilterFactory("AllowFromAll")); 
});

services.AddCors(options =>
{
    options.AddPolicy("AllowFromAll", builder => builder
        .WithMethods("GET", "POST")
        .AllowAnyOrigin()
        .AllowAnyHeader());
});