【问题标题】:Issue with SignalR core and cross domain requestsSignalR 核心和跨域请求的问题
【发布时间】:2018-07-31 09:02:35
【问题描述】:

我们将 SignalR 核心与 CORS 跨域请求一起使用。客户端无法连接到服务器。 401 Unauthorized No Access-Control-Allow-Origin' 标头出现在请求的资源上。错误:无法启动连接。请注意,我们使用的是最新的信号器核心(asp.net core 2.0 的 alpha 版本)。

请注意,在同一个客户端应用程序中,我可以访问 CORS Web API 方法。它与 SignalR 集线器/客户端隔离。

我们在 IIS 中使用 Windows 身份验证。匿名似乎正在工作。

服务器启动.cs:

ConfigureServices() 方法

services.AddCors();
services.AddSignalR();

配置方法

app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials());
app.UseSignalR(routes =>
            {
                routes.MapHub<TestHub>("test");
            });
app.UseMvc();

javascript 客户端:

let connection = new signalR.HubConnection(CORS_WEB_API_URL + '/test');
    connection.on('send', data => {
        console.log(data);
    });
connection.start();

请指教。

【问题讨论】:

  • 请注意,在同一个客户端应用程序中,我可以访问 CORS Web API 方法。它与 SignalR 集线器/客户端隔离。
  • 检查以确保您没有收到另一个错误。很多时候,错误响应(例如,如果是 401)将无法通过 CORS 检查,但根本原因不是 CORS

标签: asp.net-core cors asp.net-core-2.0 unauthorized asp.net-core-signalr


【解决方案1】:

只需将 .AllowAnyOrigin() 替换为 .WithOrigins("*")

配置服务:

services.AddCors(options => options.AddPolicy("CorsPolicy", builder =>
{
     builder
        .AllowAnyMethod()
        .AllowAnyHeader()
        .WithOrigins("*")
        .AllowCredentials();
}));

配置

app.UseCors("CorsPolicy");

经过测试

<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.0.2" />

【讨论】:

    【解决方案2】:

    我知道这是一篇旧帖子,但是,答案是使用 SignalR,您不能在 CORS 允许来源中使用通配符。

    需要具体。对于开发,我使用这个:

            services.AddCors(options => options.AddPolicy("CorsDev", builder =>
            {
                builder
                .AllowAnyMethod()
                .AllowAnyHeader()
                .WithOrigins(AppSettings.SPAHost, "http://localhost:8099")
                .AllowCredentials();
            }));
    

    然后在startup.cs中的Configure中

    app.UseCors("CorsDev");

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2015-01-01
      • 1970-01-01
      • 2021-11-18
      • 2016-03-01
      • 2013-03-06
      相关资源
      最近更新 更多