【问题标题】:Enable Cors in Web Api Core 1.1在 Web Api Core 1.1 中启用 Cors
【发布时间】:2017-11-22 18:01:10
【问题描述】:

我需要在我的 Web Api .Net Core 中启用跨域资源共享,但没有任何反应,我的请求标头中从来没有 Access-Control-Allow-Origin。

这是 Startup.cs 配置:

 public void ConfigureServices(IServiceCollection services)
    {           

        services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()
                                                                .AllowAnyMethod()
                                                                 .AllowAnyHeader()));
        services.AddMvc();            

        services.Configure<IISOptions>(options =>
        {
            options.AutomaticAuthentication = true;
        });
    }



 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();
        app.UseCors("AllowAll");
        ConfigureAuth(app);             
        app.UseMvc();
    }

这是响应标头 Header

【问题讨论】:

  • 是全部代码吗?没有异常中间件或错误页面?这些可以在发生异常时清除 cors 标头
  • 中间件或页面中没有例外。我真的不知道为什么它不起作用。没有错误,在调试中代码被执行,但没有办法有标题
  • 但是您在调用 API 时是否遇到任何错误?

标签: asp.net asp.net-mvc asp.net-core cors cross-domain


【解决方案1】:

您可以在 ConfigureServices 方法中的 Startup 类中配置 CORS

public void ConfigureServices(IServiceCollection services)
.         {
.             services.AddCors(options =>
.             {
.                 options.AddPolicy("CorsPolicy",
.                builder => builder.AllowAnyOrigin()
.                .AllowAnyMethod()
.                .AllowAnyHeader()
.                .AllowCredentials());
.             });
.         }

将其应用于每个请求

    public void Configure(IApplicationBuilder app)
{
app.UseCors("MyPolicy");
}

你可以应用在控制器或方法上,例如添加属性

 [EnableCors("MyPolicy")]

`

【讨论】:

    猜你喜欢
    • 2018-02-21
    • 2019-02-11
    • 2019-01-24
    • 2017-02-08
    • 2019-10-03
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2017-07-01
    相关资源
    最近更新 更多