[C#] Asp.net Core SignalR 跨域设置

  参考:https://blog.csdn.net/hefeng_aspnet/article/details/117777995?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-117777995-blog-106515942.pc_relevant_recovery_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-117777995-blog-106515942.pc_relevant_recovery_v2&utm_relevant_index=6

  今天试着配置SignalR并测试下连接,发现同域的时候没有问题,但跨域的时候就报错了。

网上找了很久,都是允许任意跨域, 类似这种方式(options.AddPolicy("AllowAll",o => o.withOrigins(*).AllowAnyMethod().AllowAnyHeader()); app.UseCors("AllowAll");),这个感觉不靠谱。

最终根据参考文章修改后就可以了 -->略微不同,要修改下。不过本来是想让SignalR也使用app.UseCors()里的策略,这个没找到怎么解决。

 

前端 Asp.Net Core MVC 3.1 : localhost:63004

后端 Asp.Net Core 3.1: localhost:54017

 

报错:

这个是我在前端localhost:63004 调试工具里 建立SignalR访问 后端 localhost:54017

 

解决方案

  1.添加红色部分

  app.UseEndpoints(endpoints =>
  {
       //SignalR Hub
       endpoints.MapHub<ChatHub>("/chatHub").RequireCors(t => t.SetIsOriginAllowed((host) => true).AllowAnyMethod().AllowAnyHeader().AllowCredentials());
  });

2.确保app.UseRouting()和app.UseCore("XXX")的顺序。
 app.UseRouting();
 app.UseCore("XXX");

最终效果图(从localhost:63004访问localhost:54017):

 

posted @ 2022-12-16 16:03  WikiChen  阅读(882)  评论(4编辑  收藏  举报