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

JMeter录制WebSocket请求报400错误,Chrome DevTools显示101切换协议

JMeter录制WebSocket请求返回400 Bad Request,Chrome却返回101的原因及解决方法

核心原因

  • 协议标识错误:Chrome发起的是WebSocket安全连接(wss://协议),而JMeter录制后将请求协议错误替换为https://。WebSocket握手请求必须通过ws://(非加密)或wss://(加密)协议发起,服务器收到https://开头的请求时,会将其视为普通HTTPS请求,无法识别WebSocket握手意图,直接返回400错误。
  • JMeter录制代理的协议转换问题:默认情况下,JMeter的HTTP(S)录制代理可能会把WebSocket的wss://流量映射为https://,导致录制后的请求协议不符合WebSocket规范。

解决步骤

  1. 修正请求协议

    • 找到JMeter中录制生成的请求,将URL开头的https://直接替换为wss://。
    • 如果使用JMeter的WebSocket专用采样器,确保协议下拉框选择wss,而非https。
  2. 检查并补全握手请求头

    • 对照Chrome DevTools中成功的WebSocket握手请求头,在JMeter请求中添加以下必填项:
      • Upgrade: websocket
      • Connection: Upgrade
      • Sec-WebSocket-Version: 13
    • 注:Sec-WebSocket-Key是随机生成的字符串,JMeter的WebSocket采样器会自动生成该值,无需手动固定;若用普通HTTP请求模拟握手,需保证此值为随机有效字符串。
  3. 优化JMeter录制设置

    • 打开HTTP(S) Test Script Recorder,进入Advanced标签页,确认勾选Capture WebSocket frames选项,确保录制时正确保留WebSocket协议标识,避免被转换为HTTPS。
  4. 使用WebSocket专用采样器

    • 避免用普通HTTP请求处理WebSocket交互,安装JMeter的WebSocket插件(如Peter Doornbosch开发的WebSocket Samplers),使用专用的WebSocket Open Connection采样器发起连接,该组件会自动处理协议、握手流程及必要头信息,减少手动配置错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:42:19