【问题标题】:WebApi throws 403 error always even whith CORS enabled即使启用了 CORS,Web Api 也总是抛出 403 错误
【发布时间】:2018-05-31 07:17:51
【问题描述】:

我的后端有一个在 .NET Core 2.0 中开发的 WebApi。当我测试我的生产版本时,我无法从我的控制器调用方法,我已经激活了 cors 以允许一切仅用于测试目的。当我为开发环境构建 WebApi 时,它工作得非常好。

这就是我在创业课上的内容

public void ConfigureProduction(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseForwardedHeaders(new ForwardedHeadersOptions
        {
            ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
        });

        //var options = new RewriteOptions()
        //    .AddRedirectToHttps();

        //app.UseRewriter(options);

        app.UseDeveloperExceptionPage();

        app.UseCors(builder => {
            builder.AllowAnyOrigin();
            builder.AllowAnyMethod();
            builder.AllowAnyHeader();
        });

        app.UseMvc();
    }

【问题讨论】:

  • 您是在尝试从您的项目中访问一个方法并且它正在抛出 403 错误,或者您正在尝试从您的项目中访问一些其他 API 并且正在抛出 403?另外,如果它是第 3 方 API,您可以检查环境变量/密钥等吗?
  • 我正在尝试从托管在同一服务器中的 Angular 5 应用程序访问我的 API。

标签: c# asp.net asp.net-web-api asp.net-core asp.net-web-api2


【解决方案1】:

此外,您需要允许凭据:

  • API

    app.UseCors(builder =>
    {
        builder.AllowAnyOrigin();
        builder.AllowAnyMethod();
        builder.AllowAnyHeader();
        builder.AllowCredentials(); // <-- add this line
    });
    
  • Client

    let requestOptions = new RequestOptions({withCredentials: true});
    

【讨论】:

  • 我回家后会试试这个,但为什么这只发生在生产模式下?
  • @Juanma 开发模式下还有其他配置吗?
  • 不,它只是一个空白的 webapi c# 模板。配置是生成模板时的默认值
猜你喜欢
  • 1970-01-01
  • 2019-05-03
  • 2021-01-01
  • 2014-02-13
  • 2011-09-25
  • 2018-12-23
  • 2019-12-13
  • 1970-01-01
  • 2021-07-05
相关资源
最近更新 更多