You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C-Server与浏览器WebSocket握手后报Invalid frame header问题排查

WebSocket握手帧头错误排查建议

几个可能的问题:

1. Sec-WebSocket-Accept计算错误

WebSocket握手的核心规则是:把客户端发送的Sec-WebSocket-Key与固定字符串258EAFA5-E914-47DA-95CA-C5AB0DC85B11拼接后,做SHA-1哈希再进行Base64编码,得到Sec-WebSocket-Accept返回给客户端。

你使用的客户端Key是6Hw/S8rXFY4ExVDMGWWn6Q==,重新计算后的正确Accept值应为5nXcpHEM8mSrJ51osdI/IuVB2Is=,但你服务器返回的57dCnQc8YJrJ51osdI/I71QHYi4=与正确值不符,这会直接导致浏览器拒绝握手。

2. 响应头格式不符合HTTP规范

HTTP响应头必须严格遵循格式要求:

  • 每个头字段行以\r\n(回车+换行)分隔
  • 所有头字段结束后,必须添加一个额外的\r\n空行来标记头部分结束

如果你的服务器只用了\n换行,或者最后未添加这个空行,浏览器解析时会判定帧头无效,触发报错。

3. 响应中混入多余内容

检查服务器代码,确保发送完握手响应头后,没有额外输出调试信息、空字符等字节,这些多余内容会被浏览器视为无效的帧头部分。

验证修复步骤:

  • 重新计算Sec-WebSocket-Accept值,替换服务器中的错误值
  • 修正服务器代码中响应头的换行符为\r\n,并确保最后添加空行
  • 用Wireshark抓包确认响应的字节流完全符合HTTP头格式,无多余字符

内容的提问来源于stack exchange,提问作者Touby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:36:05