如何在JMeter中同时传递浏览器自动存储Cookie与手动添加的Cookie
出现自定义Cookie不生效的核心原因是默认Cookie管理器的严格校验策略会丢弃不符合规则的手动配置Cookie,或是多Cookie管理器配置冲突,按以下步骤调整即可:
1 调整Cookie管理器核心配置
打开你用于捕获浏览器Cookie的HTTP Cookie管理器,修改如下配置:
- 实现类(Implementation)选择
HC4CookieHandler,不要使用默认的standard实现,该实现对自定义Cookie兼容性较差 - Cookie策略(Cookie Policy)选择
compatibility或netscape,关闭默认的strict严格校验,避免手动配置的Cookie被直接丢弃 - 按需勾选「每次迭代清除Cookie」,多轮迭代需要保留会话Cookie的话取消勾选即可
2 正确配置自定义Cookie
在同一个HTTP Cookie管理器的「用户自定义Cookie」区域添加手动Cookie,必须保证配置和目标请求的域匹配:
- Domain字段必须和目标请求域名完全匹配,比如请求地址为
https://pet.example.com/api,Domain可填.example.com或者完整的pet.example.com,填错会导致Cookie不生效 - Path字段一般填
/即可,接口有特殊路径限制的话填写对应路径 - HTTPS请求需要勾选
Secure选项,HTTP请求不要勾选
3 确认管理器作用域与顺序
- 不要配置多个HTTP Cookie管理器,单个请求下的Cookie管理器会覆盖线程组层级的配置,容易导致上层捕获的浏览器Cookie丢失
- 保证Cookie管理器放在线程组下所有请求的最前方,加载顺序早于你要发送的目标请求
4 异常兜底方案
如果调整后还是不生效,可以修改jmeter.properties配置文件,添加如下配置后重启JMeter:
CookieManager.check.cookies=false
该配置会完全关闭Cookie合法性校验,所有符合域规则的Cookie都会被携带发送。
你可以添加Debug Sampler监听器,运行后查看JMeter.cookies字段,即可确认两种Cookie是否都正常生效。
内容的提问来源于stack exchange,提问作者lahiru dilruwan
相关产品推荐
相关产品推荐

