【问题标题】:Is there any way to add Bearer Token to headers instead of params in SignalR?有没有办法将承载令牌添加到标头而不是 SignalR 中的参数?
【发布时间】:2021-07-23 04:25:34
【问题描述】:

我使用 Angular5+(前端)和 .Net Core 3.1(后端)

当我在构建 signalR 连接时使用 Angular 和 accessTokenFactory 时,承载令牌与 HTTP 请求一起发送为“ws://localhost:4200/test?id=xxxxx&access_token=yyyyyyyy”。不过,令牌是作为参数而不是标头值发送的。

我怎样才能改变它?

【问题讨论】:

    标签: angular asp.net-core signalr


    【解决方案1】:

    使用浏览器时,令牌必须包含在查询字符串中,因为无法在浏览器的 WebSocket 上设置标头。如果您使用的是 Node,则允许使用标头,并且可以在标头中设置令牌。

    https://github.com/dotnet/aspnetcore 提交问题以修复它。

    现在它只是假设需要 url,但可以更新它以将 Node 考虑在内。 https://github.com/dotnet/aspnetcore/blob/db8a6497042f2d2a730c1ee09ad3641502acf802/src/SignalR/clients/ts/signalr/src/WebSocketTransport.ts#L46

    【讨论】:

      【解决方案2】:

      使用 websocket 时不能使用标头。 然而,this 关于使用信号器时的安全注意事项的文章可能会有所帮助。

      【讨论】:

        猜你喜欢
        • 2018-06-15
        • 2019-12-20
        • 2016-06-11
        • 2019-11-29
        • 1970-01-01
        • 1970-01-01
        • 2017-04-23
        • 1970-01-01
        • 2020-11-22
        相关资源
        最近更新 更多