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

Enable cross-origin resource sharing (CORS) in ASP.Net 5 / Core

如何将 CORS headers 添加到我的 MVC6 应用程序?我对全局和每次操作感兴趣。

好像ASP.Net vNext/5/Core发生了一些变化所以这个问题对于不同的版本有不同的答案。我正在使用 RC1。

我试过这个 SO“”,但是到了 var policy = new Microsoft.AspNet.Cors.Core.CorsPolicy(); "Core" 命名空间不存在。

尝试了“”中的答案,但 method/extension 方法services.ConfigureCors 不存在。

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

"" 说要安装不存在的 "Microsoft.AspNet.Cors.Core",以及没有帮助的 using Microsoft.AspNet.Builder;

您需要添加预发布版本:

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

如果你想要 controller/action,你可以用以下装饰它们:

[EnableCors("AllowFromAll")]

文档中关于cors的信息比较多,供大家参考:
http://docs.asp.net/en/latest/security/cors.html

在 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());
});