首页 > 编程语言 >[C#] Asp.net Core SignalR 跨域设置

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

时间:2022-12-16 16:11:22浏览次数:64  
标签:Core Asp 跨域 app blog SignalR relevant localhost

  参考: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):

 

标签:Core,Asp,跨域,app,blog,SignalR,relevant,localhost
From: https://www.cnblogs.com/WikiChen/p/16987423.html

相关文章