JMeter 5.5请求跳转后返回401 Unauthorized问题求助
JMeter 5.5 处理URL跳转后的NTLM/Negotiate认证问题
问题分析
服务端响应返回WWW-Authenticate: NTLM和WWW-Authenticate: Negotiate,说明要求的是NTLM或Kerberos认证,而非你之前配置的BASIC_DIGEST,这是导致Authorization头未生成、返回401的核心原因。
解决方案
1. 修正HTTP Authorization管理器配置
- Base URL:设置为URL_B的根域名(例如URL_B是
https://xxx.com/login,则Base URL填https://xxx.com),确保覆盖跳转后的目标路径 - Username:如果是域账号,需写成
DOMAIN\username格式;本地账号直接填用户名 - Password:保持原密码不变
- Mechanism:选择
NTLM(优先匹配响应中的NTLM认证要求)
2. 调整HTTP请求的重定向设置
在HTTP请求的「高级」标签页中:
- 勾选跟随重定向(让JMeter自动处理跳转,保留会话上下文)
- 取消勾选自动重定向(自动重定向模式下,JMeter不会将认证凭证传递到跳转后的请求)
3. 移除手动添加的Authorization请求头
手动添加的Authorization头会与JMeter自动生成的认证头冲突,导致服务端无法识别,直接删除HTTP Header管理器中手动添加的Authorization项。
4. 优化Cookie管理器配置
确保HTTP Cookie管理器:
- 启用「清除每次迭代的cookie」(多线程/多迭代测试时避免会话混乱)
- 保持默认的「策略」为
standard,确保跳转过程中的Cookie能正确保存和传递
5. 配置JMeter的认证优先级(可选,针对域环境)
如果是Windows域环境下的NTLM认证,需修改JMeter安装目录下的bin/system.properties文件,添加以下配置:
httpclient.auth.scheme-priority=NTLM,Negotiate,Basic,Digest
修改后重启JMeter,让配置生效。
6. 验证结果
运行测试后,在查看结果树中查看URL_B的请求详情:
- 确认请求头中出现
Authorization: NTLM {编码字符串} - 检查响应状态码是否为200 OK
内容的提问来源于stack exchange,提问作者Winter Child
相关产品推荐
相关产品推荐

