当前位置: 首页 > 知识库问答 >
问题:

我无法连接到我的websocket,因为它的握手秒websocket接受标头值不正确

姬和豫
2023-03-14

我正在做我的第一个测试,尝试使用phpwebsocket。

我将其握手Sec WebSocket Accept标题值设置为以下值:

$accept=base64_encode(SHA1($key."258EAFA5-E914-47DA-95CA-C5AB0DC85B11", true));
/* $key has $buffer value */

所以我运行web套接字PHP文件(创建连接),一切正常。

因此,我运行测试html,其中包含一个脚本,该脚本试图连接到我正在使用的phpwebsocket,在浏览器控制台中,我收到以下错误:

fc.js:43 WebSocket connection to 'ws://localhost:8000/PetStack/inc/server.php' failed: Error during WebSocket handshake: Incorrect 'Sec-WebSocket-Accept' header value

但是我发现这个错误在WebSocket握手:不正确的'Sec-WebSocket接受'头值与PHP,这是通过定义缓冲区限制解决,将是我的问题?

我不知道如何定义缓冲区限制,但如果这是我的问题,请解释一下。

这个phpwebsocket不是我做的,我只是在用它。

嗯,这是phpweb套接字文件中变量$升级的一行,它设置了一些标头。

                "HTTP/1.1 101 Web Socket Protocol Handshake\r\n".
                "Upgrade: WebSocket\r\n".
                "Connection: Upgrade\r\n".
                "WebSocket-Origin:{$origin}\r\n".
                "Sec-WebSocket-Accept:".$accept."\r\n\r\n".
                "WebSocket-Location: ws://{$host}{$resource}\r\n\r\n".
                chr(0);

共有1个答案

盖夕
2023-03-14

你的握手看起来很奇怪。

没有WebSock-OriginWebSock-Place标头,并且在最后两个标头之间执行双断线操作。

您的回答应该更像这样:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=

因此,请尝试以下方法:

"HTTP/1.1 101 Switching Protocols\r\n".
"Upgrade: WebSocket\r\n".
"Connection: Upgrade\r\n".
"Sec-WebSocket-Accept: {$accept}\r\n\r\n"
 类似资料:
  • 我正在写一个c websocket服务器,chrome上的开发工具说SecWebSocket接受头值不正确。我已经测试了好几天了,一切似乎都很好。客户端使用readystate 3关闭,而不调用websocket onopen,尽管它在chrome开发工具中显示为101。 这是我计算钥匙的代码 铬反应 Chrome请求 它表示"WebSocket握手过程中出错:不正确的'Sec-WebSocket

  • 我正在用C编写一个websocket服务器,无法让握手正常工作。Chrome报告错误是由于错误的accept头,但我相信该值是正确的。 作为exchange的一个示例,客户端发送以下密钥: 我的服务器会发回: 我已经根据RFC中的示例测试了我的服务器,并进行了验证。我不知道为什么不被接受。我的理论是,我必须做一些其他事情,产生与坏接受值相同的错误。 以下是不同于wireshark捕获的请求: 以下

  • ASP.NET 5 RC1上的信号器3-RC1用户 尝试运行websocket时出现以下错误。 使用Chrome50.0.2661.87 标题如下: 请求标题: 日期:2016年4月29日星期五13:51:54 GMT 服务器:Kestrel 传输编码:分块 升级:websocket X-Content-Type-Options:nosniff X-Powered-By:ASP.NET 响应头:

  • 我正在使用Python的套接字来响应Websocket请求,并且我面临着头的问题。以前可能有过类似的问题,但没有人为我工作 文档位于https://developer.mozilla.org声明对于要建立的连接: 服务器获取握手请求中发送的Sec-WebSocket-Key的值,追加258EAFA5-E914-47DA-95CA-C5AB0DC85B11,获取新值的SHA-1,然后对其进行Bas6

  • 我正在使用C Builder 10.1柏林编写一个简单的WebSocket服务器应用程序,它在端口上侦听从网络浏览器发送的一些命令,如谷歌Chrome。 在我的表单上,我有一个TMemo、TButton和TIdHTTPServer,我有以下代码: 从Chrome,我执行这个Javascript代码: 但是我从Chrome上得到了这个错误: VM77:1到“ws://localhost:55555/

  • 我正在使用Windows server 2019,反向代理配置为ARR 3,并使用节点托管我的项目。js和socket。io,我正在重定向网站至内部地址。 当我尝试访问网站时在服务器套接字内。io正在工作,但当我尝试使用外部地址访问网络外部的网站时,我收到了错误消息 Web套接字握手期间出错:“Sec WebSocket Accept”标头值不正确