从CORS策略阻止从源“ yyy”以“ xxx”访问XMLHttpRequest

时间:2019-10-17 11:02:00

标签: vue.js asp.net-core signalr

我有一个带vuejs模板的asp.net核心应用程序。
现在,我尝试将signalR添加到客户端应用程序的当前状态是:我的后端和前端运行在同一URL(后端运行前端服务器)中,并且此URL尝试连接到Signalr客户端中心,这会导致此错误

Access to XMLHttpRequest at 'http://xxx:FronEndPort/notification-hub/negotiate' from origin 'https://xxx:BackEndPort' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

问题是如何在客户端启用cors来解决此问题

1 个答案:

答案 0 :(得分:0)

  

从原点“ http://xxx:FronEndPort/notification-hub/negotiate”到“ https://xxx:BackEndPort”处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-来源的标头出现在请求的资源上。

似乎您想从http://xxx:FronEndPort上托管的浏览器客户端访问并连接到https://xxx:BackEndPort上托管的SignalR集线器,但是托管在http://xxx:FronEndPort上的应用程序的CORS策略阻止了它。

您可以为http://xxx:FronEndPort上托管的SignalR应用配置CORS,以允许源https://xxx:BackEndPort,如下所示。

app.UseCors(builder =>
{
    builder.WithOrigins("https://xxx:BackEndPort")
        .AllowAnyHeader()
        .AllowAnyMethod()
        .AllowCredentials();
});