【问题标题】:ASP.NET Core 2 CORS not enabled未启用 ASP.NET Core 2 CORS
【发布时间】:2018-08-20 15:00:31
【问题描述】:

我正在开发一个基于 Angular 6 客户端和用于 Web 服务的 ASP.NET Core WebAPI 的 Web 应用程序。

目前(初始开发阶段)我有一个简单的架构,它由两个 Web 服务组成,一个管理身份验证和身份,另一个负责应用逻辑(业务逻辑、更新数据库、ecc)。

我正在使用 JWT Bearer 令牌进行客户端身份验证。

我的身份验证服务一切正常,但是当我尝试调用应用程序服务时,我在 Chrome 浏览器控制台中收到此错误:

无法加载http://localhost:59207/api/Files/Upload:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:4200' 不允许访问。响应的 HTTP 状态代码为 500。

此错误之前有另一个错误:

POST http://localhost:59207/api/Files/Upload 500(内部服务器错误)

在某种程度上,我得到的第二个错误与它之前的内部服务器错误有关吗?

我测试了来自 Postman 的 POST 调用,一切正常,没有服务器端错误,并且返回了我想要从我的服务返回的数据。

我已经在 ASP.NET Core 中完成了我所知道的关于 CORS 的一切。

名为“ConfigureServices”的启动类方法包含,作为第一行:

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

然后在“配置”方法中调用这个:

app.UseCors("AllowAll");

我还将 EnableCors 属性放在每个控制器类上,如下所示:

[EnableCors("AllowAll")]

有人知道我该如何摆脱这个混乱局面吗? 据我所知,这就是 CORS 的使用方式,我已经在其他项目中以这种方式运行它(但从来没有使用 ASP.NET Core 2)。

提前谢谢你

【问题讨论】:

  • 我遇到了导致类似行为的问题。我必须确保 app.UseCors 在其他任何事情之前被调用。
  • 抱歉只是提供一些上下文,它应该在 app.UseMvc 和 app.UseStaticFiles 之前调用
  • 是的,你看到的那一行是最先被调用的。关于内部服务器错误路径,我想澄清一下,从 Postman 之类的工具中,我没有收到内部服务器错误;调试在我的控制器操作开始时命中断点,一切正常。

标签: c# asp.net http asp.net-core-2.0


【解决方案1】:

这可能不是您的情况的答案,但我过去经常遇到这个问题。这是一个Chrome 问题,当两个localhosts 在POST 请求之间交谈时。

尝试使用其他浏览器,看看是否有效;如果是这样,您可以通过禁用Security 来继续使用Chrome

chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security

希望这会有所帮助。

【讨论】:

  • 我认为禁用浏览器安全性没有帮助。我的最终用户呢?如何管理他们的浏览器安全状态?
  • 它不会影响最终用户,问题是当chrome 运行localhost:xxxx 前端时,试图将CORS 放入localhost:xxx api它会导致这个问题。因此,如果您将前端设置为可在 IIS 下通过 exampleHostName 而不是 localhost:xxxx 在本地访问,问题就会消失。 see here for more details
  • 哦,好的,知道了!我会尝试报告反馈,现在谢谢!
猜你喜欢
  • 2020-09-02
  • 1970-01-01
  • 2015-11-03
  • 2021-04-09
  • 2021-12-30
  • 2019-06-13
  • 2021-12-14
  • 2021-02-22
相关资源
最近更新 更多