欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

.NetCore3.1下Signalr的跨域问题

程序员文章站 2023-12-30 15:11:52
...

        今天将公司的.net 下的Signarl项目移植到.netcore平台,安装微软的官方文档,一切都比较顺利,但是最后再跨域问题上碰到了一点坑,特此记录一下,也供有同样需要的朋友参考。

        在.net版本的Signalr下,跨域问题比较容易解决,代码如下:

class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.Map("/signalr", map =>
        {               
            map.UseCors(CorsOptions.AllowAll);               
            map.RunSignalR(hubConfiguration);
        });
            
        app.MapSignalR();
    }
}

        到了.netcore3.1中,需要按如下方法设置,首选在ConfigServices方法中:

       services.AddCors(op => { op.AddPolicy("cors", set => { set.SetIsOriginAllowed(origin => true).AllowAnyHeader().AllowAnyMethod().AllowCredentials(); }); });

        在Configure中,

  app.UseCors();

        这种做好后,实际测试对于Signalr的hub链接仍然存在跨域问题,经过研究,发现最关键的是一定要对hub进行跨域设置,代码如下:

    endpoints.MapHub<AgentCti>("/AgentCtiHub").RequireCors(t => t.WithOrigins(new string[] { "null" }).AllowAnyMethod().AllowAnyHeader().AllowCredentials());

      经过测试,跨域访问起效了,当然对于允许的访问域需要根据自己的实际情况进行配置。

上一篇:

下一篇: