【问题标题】:Web API 2 - CORS - working in debug, but not in IIS expressWeb API 2 - CORS - 在调试中工作,但不在 IIS express 中
【发布时间】:2017-07-09 20:32:23
【问题描述】:

过去几天我一直在努力解决以下问题:

我们有一个带有 CORS 实现的 Web API 项目。

当我在本地以调试模式运行项目时,一切正常。

当我尝试将项目部署到本地 IIS 或停止在 VS 中调试时,就会出现问题。 一旦我尝试提出请求,我就会收到以下错误:

请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:82' 因此不允许访问。

更让我恼火的是,当我将 API 部署到我们的天蓝色环境时,一切正常,我不再收到错误消息。

这是我的 startup.cs 和我的 CORS 配置:

public void Configuration(IAppBuilder app)
{
    app.UseCors(buildCorsOptions());

    ConfigureAuth(app);
}

private static CorsOptions buildCorsOptions()
{
    return new CorsOptions
    {
        PolicyProvider = new CorsPolicyProvider
        {
            PolicyResolver = context =>
            {
                var corsPolicy = new CorsPolicy
                {
                    AllowAnyHeader = true,
                    AllowAnyMethod = true,
                    SupportsCredentials = true
                };

                //localhosts for debugging purposes
                corsPolicy.Origins.Add("http://localhost");
                corsPolicy.Origins.Add("http://localhost:82");

                return Task.FromResult(corsPolicy);
            }
        }
    };
}

有人知道我可能会错过什么吗?

【问题讨论】:

    标签: azure iis cors asp.net-web-api2 iis-express


    【解决方案1】:

    我找到了解决办法!

    我们有一个端点返回一个异常,该异常在 CORS 有机会修改响应标头之前被执行。

    这使得错误看起来像是一个 CORS 问题,但实际上它只是我们代码中的一个内部异常。

    【讨论】:

      【解决方案2】:

      之前尝试了几十个网站提供的几个代码和配置更改,但没有一个对我有用(VS 2019 社区版 + EDGE + IISExpress)。解决方法是改用 Google Chrome 并安装名为 CORS Unlock 的插件。您需要在通过 VS 启动页面后安装此插件。

      【讨论】:

      • blog.lextudio.com/… 如果您不想切换到完整的 IIS,第 1 步是在 IIS Express 上安装 CORS 模块。
      猜你喜欢
      • 2020-01-21
      • 2016-11-23
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多