[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):