首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ASP.NET核心中启用CORS

如何在ASP.NET核心中启用CORS
EN

Stack Overflow用户
提问于 2015-08-11 20:37:58
回答 19查看 243.9K关注 0票数 259

我尝试在我的ASP.NET Core Web API上启用跨域资源共享,但我卡住了。

EnableCors属性接受string类型的policyName作为参数:

代码语言:javascript
复制
// Summary:
//     Creates a new instance of the Microsoft.AspNetCore.Cors.Core.EnableCorsAttribute.
//
// Parameters:
//   policyName:
//     The name of the policy to be applied.
public EnableCorsAttribute(string policyName);

policyName是什么意思?如何在核心Web API上配置ASP.NET CORS

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2015-08-11 20:42:27

对于ASP.NET核心6:

代码语言:javascript
复制
var  MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddCors(options =>
{
    options.AddPolicy(name: MyAllowSpecificOrigins,
                      builder =>
                      {
                          builder.WithOrigins("http://example.com",
                                              "http://www.contoso.com");
                      });
});

// services.AddResponseCaching();

builder.Services.AddControllers();

var app = builder.Build();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

app.UseCors(MyAllowSpecificOrigins);

app.UseAuthorization();

app.MapControllers();

app.Run();

有关更多示例,请参阅official docs

对于ASP.NET核心3.1和5.0:

您需要在应用程序启动时通过ConfigureServices方法配置CORS策略:

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
    {
        builder.WithOrigins("http://example.com")
               .AllowAnyMethod()
               .AllowAnyHeader();
    }));

    // ...
}

builder中的CorsPolicyBuilder允许您根据需要配置策略。现在,您可以使用此名称将策略应用于控制器和操作:

代码语言:javascript
复制
[EnableCors("MyPolicy")]

或者将其应用于每个请求:

代码语言:javascript
复制
public void Configure(IApplicationBuilder app)
{
    app.UseCors("MyPolicy");

    // ...

    // This should always be called last to ensure that
    // middleware is registered in the correct order.
    app.UseMvc();
}
票数 424
EN

Stack Overflow用户

发布于 2017-04-09 13:00:32

适用于.NET核心1和.Net核心2

如果使用.Net-Core 1.1

不幸的是,在这个特定的案例中,文档非常混乱。所以我会让它变得非常简单:

  • Microsoft.AspNetCore.Cors nuget包添加到项目

添加services.AddCors();

  • In ConfigureServices method

  • In Configure方法,在调用app.UseMvc()app.UseStaticFiles()之前,添加:

App.UseCors(构建器=>构建器.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() builder

就这样。每个客户端都可以访问您的ASP.NET核心网站/应用程序接口。

如果使用.Net-Core 2.0

  • Microsoft.AspNetCore.Cors nuget包添加到项目

  • in ConfigureServices method,调用services.AddMvc()之前,添加:

services.AddCors(options => { options.AddPolicy("AllowAll",builder => { builder .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials();});});

Configure方法中的

  • (Important),在调用app.UseMvc()之前添加app.UseCors("AllowAll");

"AllowAll"是我们需要在app.UseCors中提到的策略名称。它可以是任何名字。

票数 122
EN

Stack Overflow用户

发布于 2015-08-11 20:57:36

基于Henk's answer,我已经能够想出特定的域、我想要允许的方法以及我想要为其启用CORS的头部:

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
         options.AddPolicy("AllowSpecific", p => p.WithOrigins("http://localhost:1233")
                                                   .WithMethods("GET")
                                                   .WithHeaders("name")));
    services.AddMvc();
}

用法:

代码语言:javascript
复制
[EnableCors("AllowSpecific")]
票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31942037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档