在角度应用程序中使用 SignalR Core 时出现 CORS 错误

Posted

技术标签:

【中文标题】在角度应用程序中使用 SignalR Core 时出现 CORS 错误【英文标题】:CORS error when using SignalR Core in angular app 【发布时间】:2019-12-07 00:07:35 【问题描述】:

在 CORS 配置中,我允许使用 OPTIONS 方法,但是当我发送请求时,会抛出错误

选项http://x.x.x.x:port/function 405(方法不允许)

我在 Startup.cs 中的 ConfigureServices 方法中的 CORS 策略如下:

services.AddCors(options =>

    options.AddPolicy("AllowAny", x =>
  
    x.AllowAnyOrigin()
     .AllowAnyHeader()
     .WithMethods("POST", "OPTIONS");
  );
);

它的用法如下:

app.UseCors("AllowAny");

中心代码:

public async Task SendMessage(string user, string message) 
   string outputMessage = SensorsControl.controlSensors(message.ToString()); 
   await Clients.All.SendAsync("ReceiveMessage", user, outputMessage);

角度的SignalR代码:

this._hubConnection = new HubConnection('http://x.x.x.x:port/function'); 
this._hubConnection.start() 
                   .then(() => console.log('Connection started!')) 
                   .catch(err => console.log('Error while establishing connection')); 
this._hubConnection.on('ReceiveMessage', (user: string, outputMessage: string) => 
 
  const text = $user: $outputMessage; this.messages.push(text); 
); 

【问题讨论】:

你能显示你的信号器代码和你的集线器代码吗? @TonyNgo 还有什么需要的吗? 更新你的问题而不是你的评论 完成 :) @TonyNgo 您也可以尝试在其他地方添加标题。为此,我经常使用 web.config:gist.github.com/Jalalhejazi/5653347 【参考方案1】:

我解决了伙计们:D 问题是我的 Angular 应用程序托管在 localhost 上,这应该是我的 IPv4 IP,但它变成了 SignalR 服务器不理解的 127.0.0.1。在没有任何变化的情况下,我使用 ng serve --host 0.0.0.0 提供了角度服务,然后使用我的 IPv4 IP 连接,发挥了魅力:D 感谢您的帮助!干杯!!

【讨论】:

以上是关于在角度应用程序中使用 SignalR Core 时出现 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章

建立连接时的 SignalR Core 调用函数

在 ASP.NET Core 中使用 SignalR

ASP.NET Core在支付宝小程序中使用signalR

Signalr 带有角度和 .net 核心错误,代码为 1006

带有 SignalR 集线器的 ASP.NET Core 中的范围服务

发现 ASP.NET Core SignalR