来自其他域的SignalR推送不起作用

时间:2019-11-20 00:58:04

标签: asp.net-core signalr asp.net-core-2.2 asp.net-core-signalr

我的应用程序上正在运行SignalR。我可以将HubContext注入我的控制器,然后通过从网络浏览器访问控制器上的GET端点来触发消息。

因此,我可以在控制器上打开两个浏览器窗口,一个打开至Web应用程序,另一个打开至GET URL。当我访问窗口2中的GET URL时,我可以在窗口1中看到消息返回。成功!

但是...

我在不同的域中有一部分应用程序。这是我在iframe中显示的外部Web应用程序。为了分离问题,我将回调URL作为参数发送到外部Web应用程序。在该外部应用程序中完成某些工作后,用户单击“保存”按钮,然后该应用程序将发布到我发送的回调URL。回调URL指向控制器上的端点,我可以说代码一直在运行。但是,应该在最后一行代码中将上述SignalR消息广播回上述窗口1中的Web应用。即使通过POST访问端点,也会遇到SignalR消息。

我本以为这可能是由于CORS政策所致,但我已尽可能宽大处理。也可能是因为我不太清楚SignalR的工作原理,我需要写一篇在前端进行民意测验的文章,但这似乎可以否定我能够通过浏览器进行推送的事实。 / p>

按照本文的建议(Issue with SignalR core and cross domain requests),我尝试了以下操作,并使用星号,窗口1域和外部应用程序域。没有工作。

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

有什么想法吗?

0 个答案:

没有答案