JMeter录制脚本运行时进入主界面触发FORGED_REQUEST错误求助
关于JMeter测试中出现FORGED_REQUEST错误的原因分析
这个错误是目标系统(从异常类com.i2.tm.ui.ria.client.exception.DataException判断,大概率是i2 Analyze相关系统)识别到请求非法,核心原因是JMeter发送的请求缺少服务器端要求的合法请求校验信息,具体分以下几种常见情况:
- 缺失动态校验参数:很多富客户端应用会为每个请求生成动态签名、CSRF令牌或请求ID,用于验证请求是否来自合法客户端。JMeter录制时只能捕获录制时刻的静态参数,后续执行测试时这些参数没有随会话更新,导致服务器判定请求为伪造。
- 请求上下文关联失败:主界面的操作依赖登录后建立的会话上下文,部分请求需要使用前序请求响应中的动态值(比如会话内生成的唯一标识)作为参数。如果JMeter没有正确提取并关联这些值,请求就会脱离合法会话上下文,触发FORGED_REQUEST。
- 客户端行为模拟不完整:部分应用会校验请求的细节特征,比如HTTP头的顺序、自定义Header的值、请求间隔等。JMeter录制的请求如果遗漏了这些细节,或者请求发送节奏与真实用户差异过大,会被服务器判定为非合法客户端发起的请求。
排查方向建议
- 对比浏览器真实请求(通过F12开发者工具查看)和JMeter的请求,找出缺失的动态参数,用JMeter的正则表达式提取器或JSON提取器从之前的响应中提取对应值并关联到当前请求。
- 检查HTTP头是否完整,确保所有自定义Header(如
X-CSRF-Token、X-Request-Signature)都被正确配置,必要时动态生成这些Header的值。 - 模拟真实用户的操作节奏,添加定时器控制请求间隔,避免因请求发送过快触发服务器的异常检测机制。
内容的提问来源于stack exchange,提问作者lhp
相关产品推荐
相关产品推荐

