一、ASP.NET Core5.0 SignalR CORS 跨域处理
1.在Asp.Net Core 3.0 SingalR 以前的版本配置跨域处理参考:
ASP.NET Core SignalR CORS 跨域处理_天马3798的博客-CSDN博客_signalr 跨域
核心代码:
//注册signalr--指定跨域方案
app.UseCors("any").UseSignalR(route =>
{
route.MapHub<NoticeHub>("/ws_notice");
});
2.在Asp.Net Core 3.0 后路由配置使用了 UseEndpoints 终结点方式,以前的方法UseSignalR不在支持。
3.新版使用 MapHub 绑定集线器,使用RequireCors 配置跨域处理。
4.在Asp.Net Core 3.0 后SingalR启动方式也发生了变化,详情见下面文章连接。
二、新版解决方案:
1.设置CORS
//设置跨域访问
services.AddCors(options =>
{
//登录用户使用
options.AddPolicy("any", builder =>
{
builder.WithOrigins(
"http://crm.muzixiaohua.com/",
"http://localhost:55329",
"http://192.168.0.105",
"http://localhost:64151",
"http://localhost:8080",
"http://localhost:8081",
"http://localhost:8082",
"null")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
//公开使用
options.AddPolicy("all", builder =>
{
builder.WithOrigins("*")
.AllowAnyMethod()
.AllowAnyHeader();
});
});
2.配置集线器,设置跨域
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapAreaControllerRoute(
name: "api", "api",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
//注册signalr--指定跨域方案
endpoints.MapHub<NoticeHub>("/ws_notice").RequireCors("any");
});
更多: