有没有办法在 ASP.NET Core 2.2 MVC 中专门为 SignalR 集线器设置 CORS 策略?
Is there a way to set CORS policy solely for a SignalR hub in ASP.NET Core 2.2 MVC?
我有一个 ASP.NET Core 2.2 MVC 项目,我需要专门为 SignalR hub 设置 CORS 策略,但不是全局(不是为所有控制器和操作)。如果我通过添加 app.UseCors()
来遵循建议,它会在全球范围内起作用,我只需要为 SignalR 应用该策略。有办法吗?
我也试过 this 但没有成功。
编辑 2019-07-22 18:33 CEST
这是我使用的 CORS 策略:
services.AddCors(o =>
{
o.AddPolicy("MyCorsPolicy", b =>
{
b.AllowAnyHeader()
.AllowAnyMethod()
.SetIsOriginAllowed(s => true)
.AllowCredentials();
});
});
经过几个小时的尝试,我不得不求助于 GitHub,这就是 Brennan Conroy 的建议:https://github.com/aspnet/AspNetCore/issues/12564
而且有效!
编辑 2019-07-29 13:40 CEST
这就是帮助:
app.Map("/path", c =>
{
c.UseCors("somePolicy");
c.UseSignalR(route =>
{
route.MapHub<MyHub>("/hub");
});
});
客户端将通过“/path/hub”连接到集线器。
我有一个 ASP.NET Core 2.2 MVC 项目,我需要专门为 SignalR hub 设置 CORS 策略,但不是全局(不是为所有控制器和操作)。如果我通过添加 app.UseCors()
来遵循建议,它会在全球范围内起作用,我只需要为 SignalR 应用该策略。有办法吗?
我也试过 this 但没有成功。
编辑 2019-07-22 18:33 CEST
这是我使用的 CORS 策略:
services.AddCors(o =>
{
o.AddPolicy("MyCorsPolicy", b =>
{
b.AllowAnyHeader()
.AllowAnyMethod()
.SetIsOriginAllowed(s => true)
.AllowCredentials();
});
});
经过几个小时的尝试,我不得不求助于 GitHub,这就是 Brennan Conroy 的建议:https://github.com/aspnet/AspNetCore/issues/12564
而且有效!
编辑 2019-07-29 13:40 CEST
这就是帮助:
app.Map("/path", c =>
{
c.UseCors("somePolicy");
c.UseSignalR(route =>
{
route.MapHub<MyHub>("/hub");
});
});
客户端将通过“/path/hub”连接到集线器。