SignalR Core JS 客户端未在"Upgrade "请求上传递授权标头



我必须使用ASP .NET Core实现推送通知服务。因为明显的选择是使用SignalR核心。

我们的平台设置正在使用Azure App Gateway,并配置为不允许未经验证的请求。

我们与SignalR设置了Websockets通信。

在引擎盖下,信号核心遵循以下步骤:

  1. pos ../negociate-> hub_token和支持的运输
  2. get(发送升级标题和WebSockets令牌)../Hub?id = {Hub_Token} - ?失败

在研究为什么步骤2不升级连接到WebSocket连接时,我注意到Get请求缺少授权标题。显然Ag阻止了此请求,甚至没有到达API。

我已经尝试手动与Postman进行"握手"。以上步骤:

  1. 好的
  2. 包括授权JWT标头 ->结果101,而Fiddler确认连接已打开。

我已经研究了该文档,并发现不支持授权标题。

有人尝试过任何解决方法吗?母鸡是 @aspnet/signalr客户端的下一个版本吗?

您是否指定了accessTokenFactory

let connection = new signalR.HubConnectionBuilder()
.withUrl("/myhub", {
    accessTokenFactory: () => {
        // Get and return the access token.
        // This function can return a JavaScript Promise if asynchronous
        // logic is required to retrieve the access token.
    }
})
.build();

更多信息。

,因此最终的分辨率为:在浏览器中,与HTTP 101升级一起发送JWT标头的限制

最新更新