如何将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;
没有帮助。
答案 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());
});