.NetCore SignalR + React - CORS 调用不起作用

Ger*_*zzi 6 .net signalr reactjs

我有一个 SignalR 问题,在协商阶段,我从一个 ReactJS 站点调用到一个 .net core signalR 集线器,错误是 CORS 标头不存在,我已经启动了 CORS 并正在工作,因为整个站点调用另一台服务器中的后端,所有调用都工作正常。

这是我得到的错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://localhost:8080 ”。

这是客户端代码:

SignalR() {
    const connection = new signalR.HubConnectionBuilder()
      .withUrl(process.env.API_URL + "/HealthMonitorHub", options => {
        options.UseDefaultCredentials = true;
    })
    .build();
    connection
      .start()
      .then(() => console.log('Connection started!'))
      .catch(err => console.log('Error while establishing connection => ' + err));
  }
Run Code Online (Sandbox Code Playgroud)

这是服务器端网络核心启动:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR();
    services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
    {
        builder.AllowAnyMethod()
        .AllowAnyHeader()
        .WithOrigins("*")
        .AllowCredentials();
    }));
    services.Configure<MvcOptions>(options =>
    {
         options.Filters.Add(new CorsAuthorizationFilterFactory("CorsPolicy"));
    });
    services.AddMvc();
 }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
     app.UseCors("CorsPolicy");
     if (env.IsDevelopment())
         app.UseDeveloperExceptionPage();
     else
         app.UseExceptionHandler("/error");

     app.UseSignalR(route =>
     {
          route.MapHub<HealthMonitorHub>("/HealthMonitorHub");
     });
     app.UseMvc();
  }
Run Code Online (Sandbox Code Playgroud)

我知道 CORS 配置很好,我不知道反应端是否缺少某些内容,我在两侧使用相同的版本,1.0.3 和 net core 2.1.402。

有任何想法吗?

谢谢

小智 0

在配置方法中尝试以下操作:

app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials()); 
Run Code Online (Sandbox Code Playgroud)

代替

app.UseCors("CorsPolicy");
Run Code Online (Sandbox Code Playgroud)