未启用ASP.NET Core 2 CORS

时间:2018-08-20 15:00:32

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

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

目前(初始开发阶段),我有一个简单的体系结构,该体系结构由两个Web服务组成,一个Web服务管理身份验证和身份,另一个Web服务包含应用逻辑(业务逻辑,更新db等)。 / p>

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

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

  

无法加载http://localhost:59207/api/Files/Upload:所请求的资源上不存在“ Access-Control-Allow-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中运行)。

提前谢谢

1 个答案:

答案 0 :(得分:0)

这可能无法解决您的情况,但过去我经常遇到此问题。在Chrome个请求的两个localhost之间进行通话时,这是一个POST问题。

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

继续使用Security
chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security

希望这会有所帮助。