JMeter回放脚本报HTTP is not a trusted server及403 Forbidden登录失败
JMeter回放登录脚本403及服务端不信任报错解决方案
对应报错信息:响应返回“HTTP is not a trusted server”,状态码为403 Forbidden,登录请求直接失败
触发原因
该类报错核心是服务端拦截了非法请求,常见触发场景如下:
- 请求使用HTTP协议,但目标服务端强制要求HTTPS访问,触发访问拦截
- JMeter未配置目标服务端的SSL证书信任,被服务端判定为不受信任的客户端
- 录制生成的脚本缺失浏览器正常请求携带的必要请求头,触发服务端的反爬/非法请求校验
- 脚本中写死了CSRF Token、Session ID等动态登录校验参数,参数过期后被服务端拒绝访问
修复步骤
修正请求协议
将所有登录相关请求的协议从http修改为https,同时确认请求端口和服务端HTTPS端口匹配,默认HTTPS端口为443,不要沿用HTTP的80端口。如果服务端配置了HTTP转HTTPS的重定向规则,可在HTTP请求的高级设置中勾选跟随重定向适配跳转逻辑。配置SSL证书信任
测试环境可临时配置JMeter跳过SSL证书校验,打开JMeter安装路径下bin/system.properties文件,添加如下配置后重启JMeter生效:
javax.net.ssl.trustStore=NONE javax.net.ssl.trustStoreType=JKS jsse.enableSNIExtension=false
生产环境建议将服务端的正式SSL证书导入JMeter的信任证书库,避免跳过校验带来的安全风险。
补全必要请求头
对比浏览器正常登录时的请求头,给JMeter的HTTP请求补充缺失的Referer、Origin、User-Agent、Host字段,避免触发服务端的请求来源校验。替换动态校验参数
检查登录请求的参数、Cookie中是否包含动态生成的校验值(如CSRF Token、验证码关联参数等),将脚本中写死的固定值替换为从前置请求中实时提取的参数值,避免参数过期导致请求被拒绝。
内容的提问来源于stack exchange,提问作者Roshan
相关产品推荐
相关产品推荐

