一、ASP.NET Core SignalR CORS 跨域问题
默认情况下,配置SignalR 集线器不支持跨域处理。
在使用 SignalR 项目中处理跨域操作,方案如下:
1.启用signalR ,注册跨域方案
public void ConfigureServices(IServiceCollection services)
{
//设置跨域访问
services.AddCors(options =>
{
//登录用户使用
options.AddPolicy("any", builder =>
{
builder.WithOrigins(
"http://crm.muzixiaohua.com/",
"http://localhost:64151",
"http://localhost:8080",
"http://localhost:8081",
"http://localhost:8082",
"null")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
//公开使用
options.AddPolicy("all", builder =>
{
builder.WithOrigins("*")
.AllowAnyMethod()
.AllowAnyHeader();
});
});
//注册signalr
services.AddSignalR();
}
2.使用跨域方案,监听集线器
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
IHttpContextAccessor accessor)
{
//注册signalr--指定跨域方案
app.UseCors("any")
.UseSignalR(route =>
{
route.MapHub<App_Code.NoticeHub>("/ws_notice");
});
app.UseWebSockets();
//方式处注册不支持跨域
//app.UseSignalR(routes => routes.MapHub<App_Code.NoticeHub>("/ws_notice"));
}
更多: