Blazemeter录制Jmeter脚本时SignalR相关请求返回403错误的解决问询
是否可以直接排除SignalR相关请求
是否排除完全匹配你的测试目标即可:
- 若本次测试仅验证登录、登出接口的性能,且SignalR相关功能不属于当前测试覆盖的业务范围,也不影响登录登出流程的正确性,可直接排除这类请求,不会干扰核心测试指标的统计结果。
- 若本次测试需要覆盖用户登录后的完整业务链路,或SignalR是产品核心功能(如实时状态同步、消息推送等)的组成部分,不可直接排除,需修复403问题后纳入测试。
403报错的解决方案
你遇到的403错误本质是录制脚本时硬编码了固定的connectionToken,该参数和单用户的SignalR连接、身份会话强绑定,不同用户、不同连接的connectionToken完全独立,复用录制的固定值会直接被服务端鉴权拦截,修复步骤如下:
- 找到生成
connectionToken的源头请求,一般为/signalr/negotiate协商接口,在Blazemeter中为该请求添加JSON提取器或正则提取器,从响应结果中提取当前用户的动态connectionToken,保存为变量,例如${signalr_connection_token}。 - 遍历所有包含
connectionToken的SignalR请求,将请求中原有的硬编码token值替换为你提取的变量${signalr_connection_token}。 - 检查SignalR请求的其他鉴权参数,确认是否携带了正确的用户会话Cookie、Authorization授权头,如有硬编码的鉴权信息同步替换为对应用户的动态参数。
- 先使用单个用户执行调试,确认所有SignalR请求返回正常后,再扩展到10并发用户执行测试。
内容的提问来源于stack exchange,提问作者Beklevir
相关产品推荐
相关产品推荐

