http - 客户端未使用 websocket 协议(protocol) : 'upgrade' token not found in 'Connection' header

标签 http go websocket https gorilla

我正在使用 Gorilla Websocket 包来实现一个 websocket。

conn, err := upgrader.Upgrade(w, r, nil)

    if err != nil {
        // handle error
        fmt.Println(err)
    }
    defer conn.Close()
我看到以下错误
websocket:客户端未使用 websocket 协议(protocol):在“连接” header 中找不到“升级” token
我打印在我请求的标题上,我看到了下面的内容
Sec-Fetch-User ?1
Sec-Fetch-Dest document
Referer http://localhost:4747/home
Cookie myGoLiveCookie=369d99fa-901d-4b23-a64b-4731247de304
Sec-Ch-Ua "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"
Sec-Ch-Ua-Mobile ?0
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Sec-Fetch-Site same-origin
Accept-Encoding gzip, deflate, br
Upgrade-Insecure-Requests 1
Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Mode navigate
Accept-Language en-GB,en-US;q=0.9,en;q=0.8
Connection keep-alive
没有按预期升级 websocket 或连接升级
我面临与 https://www.gitmemory.com/issue/gorilla/websocket/507/488770126 完全相同的问题
我相信。
有没有人有任何指示或可以指导我如何解决这个问题?

最佳答案

浏览器js请求ws连接方式错误,正确ws请求码var ws = new WebSocket("ws://localhost:4747/ws"); .
一个正确的ws请求头,里面的每个头都是必须的,但是值不同。

GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com

关于http - 客户端未使用 websocket 协议(protocol) : 'upgrade' token not found in 'Connection' header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65309160/

相关文章:

node.js - 适用于大于 128 字节的 node.js 播放负载的 MQTT 客户端

json - Webservice-多种文件输出格式

带语言环境的 HTTP GET 请求

go - httptest 可以用来测试 HTTP/2 吗?

java - IoT 网关和云服务器消息传递

iphone - NSURLConnection 在我得到 Error Domain=NSPOSIXErrorDomain Code=57 后不会响应

java - 为什么我们会收到 HTTP 503 服务不可用的信息?

c# - 设置 HttpWebRequest 的 AutomaticDecompression 导致响应 ContentLength 为 -1

multithreading - 无法连接时停止 channel

interface - 通过引用设置接口(interface){}参数