WebSocket 和 HTTP 标头

我试图弄清楚如何在建立 WebSocket 连接后将带有授权令牌的标头添加到该连接中。基本上,使用 cookie 来验证连接中的每条消息。

Websockets 客户端 API 中的 HTTP 标头已经有一个很好的讨论,但它并没有真正帮助我。

其中一项建议是:

document.cookie = 'X-Authorization=' + token + '; path=/';

不幸的是,它对我没有帮助。

func handler(ws *websocket.Conn, h *Hub) {

    go h.run()

    h.addClientChan <- ws

    for {

        config := ws.Config()

        fmt.Println("Headers length:", len(config.Header))

        ...

在添加 cookie 之前和之后显示包含 0 个元素的地图。


建立连接后是否可以更改 WebSocket 连接标头?


如果我每次都进行身份验证,我是否需要向 WebSocket 连接添加授权令牌,或者仅在重新建立连接时有用,而在事后进行无用的检查?


慕哥6287543
浏览 229回答 1
1回答

侃侃尔雅

建立连接后是否可以更改 WebSocket 连接标头?您无法在收到 WebSocket 消息时设置 cookie。一旦建立了WebSocket连接,它就是一个开放的TCP套接字,并且协议不再是http,因此没有内置的方式来交换cookie。您可以在第一个 http 请求上使用授权,双方建立用于交换数据的协议。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go