JMeter——HTTP COOKIE Manager(cookie管理器)

本文介绍JMeter中HTTP Cookie Manager的功能及使用方法,包括自动收集和手动添加Cookie的过程,以及如何配置JMeter支持跨域Cookie管理和存储策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ATTENTION:

现在对于JMeter来说,一个测试计划只能有一个cookie管理器。因为当多个magager存在时,JMeter目前还没有方法来指定使用那个manager。同时,一个cookie manager中的存储的cookie也不能被其他cookie manager所引用,所以同一个计划中不建议使用多个cookie manager

HTTP COOKIE Manager管理cookie有两种方法:
  1. 他可以像浏览器一样存储和发送cookie,如果你要发送一个带cookie的http请求,cookie manager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies。每个JMeter线程都有自己的“cookie存储区域”,
  所以当你测试一个使用cookie来管理session信息的web站点时,每个JMeter线程都有自己的session。
  注意:
以这种自动收集的方式收集到的cookie不会在cookie manager中进行展示,但是运行后,通过:查看结果树(监 听器)可以查看到cookie信息。
 早期的JMeter版本(2.3.2或更早)对与cookie的管理是支持跨域的,也就是说不同域名的网站都可以使用cookie manager中  的cookie,2.3.2版本之后,这个就不可以了,必须同源,才能共用cookie,如果你想让JMeter的cookie manager支持跨域,  修改JMeter.property :
CookieManager.check.cookies=false

  接受到的cookie会被自动存储在线程变量中,但是从Jmeter2.3.2版本后,默认不再存储,如果你想要manager自动存储收集到 的cookie,你需要修改JMeter.property :
CookieManager.save.cookies=true
    存储的时候,cookie的key会以“COOKIE_”为前缀命名(默认情况),如果你想自定义这个前缀,
修改JMeter.property :
CookieManager.name.prefix= 
    这个配置如果未启用(也就是维持默认),我们可以通过一下方式获取到cookie的值:${COOKIE_name},其       中name为cookie的名称

   2. 除了上面说的自动收集,我们还可以手动添加cookie,这里,笔者要给大家一个建议,尽量不要一个一个手动去填写,我们可 以结合firefox的插件firebug,直接将cookie导入,操作如下
  • 打开firebug,如图
JMeter——HTTP COOKIE Manager(cookie管理器) - 一切随缘 - 随缘
   点击红色框中的,下拉框中有个导出本站点的cookie,就可以将cookie信息保存为一个cookies.txt文件,接着打开jmeter 的cookie manager:
JMeter——HTTP COOKIE Manager(cookie管理器) - 一切随缘 - 随缘
  载入刚才导出的cookies.txt文件即可。
各个参数说明:
名称 描述 是否必填
  Name 自定义该cookie的描述,例如:tuan.qq.com的cookie N
  Clear Cookies each Iteration 每次线程组运行前,都会清楚cookie,但是如果是手动添加的cookie,不会被清除 N
  Cookie Policy 选择cookie的管理策略,建议选择compatibility,兼容性强 
  User-Defined Cookies 用户自定义cookie 
  Add Button 。。。略过 

### JMeter HTTP Cookie管理器使用教程 #### 1. 基本概念 HTTP Cookie管理器JMeter中的一个重要组件,用于模拟浏览器的行为,在请求之间管理和传递Cookies。它能够自动处理服务器返回的Cookies,并将其附加到后续的相关请求中。 --- #### 2. 配置方法 ##### (1) 修改`jmeter.properties`文件 为了使HTTP Cookie管理器正常工作,需确保`jmeter.properties`文件中有以下配置项被启用: ```properties CookieManager.save.cookies=true ``` 如果该选项前有`#`号,则需要移除并保存文件,随后重新启动JMeter以应用更改[^3]。 ##### (2) 添加HTTP Cookie管理器JMeter界面中,可以通过右键点击线程组 -> **添加** -> **配置元件** -> **HTTP Cookie管理器**来完成添加操作[^4]。 ##### (3) 设置共享范围 HTTP Cookie管理器支持不同的作用域模式,具体包括: - `All threads`: Cookies将在所有线程间共享。 - `First level thread group only`: Cookies仅在同一级别的线程组内共享。 - `No sharing at all`: 每个线程拥有独立的Cookies集合。 可以根据测试需求调整此参数,默认情况下为`No sharing at all`[^1]。 ##### (4) 手动导入Cookies 当需要手动指定某些特定的Cookies时,可通过【CSV Data Set Config】读取外部文件(如`cookie.txt`)。例如,假设已定义了一个名为`xn_cookie50`的变量,则可以在脚本中直接调用该变量作为Cookie值。 --- #### 3. 实际案例分析 以下是基于上述理论的一个简单实例: 假设目标网站登录后会返回一个Session ID类型的Cookie,我们希望验证其有效性。 1. 创建一个新的测试计划; 2. 在线程组下依次添加以下元素: - **HTTP 请求默认值** - 输入基础URL地址。 - **HTTP Cookie管理器** - 不作额外改动,保持默认状态。 - **HTTP 请求采样器** - 定义具体的API路径以及必要的Header/Body数据。 3. 启动监听器观察结果; 4. 如果一切顺利,应该能够在响应头信息里发现预期的Set-Cookie字段;同时借助查看结果树功能确认实际传输过程中的Cookies详情。 --- #### 4. 获取Cookies的方法 除了依赖于工具本身的自动化机制外,还可以利用函数表达式提取所需的单个Cookie名称及其对应的值。比如下面这段Groovy代码片段展示了如何动态访问某个特定的Cookie: ```groovy def cookieValue = vars.get('COOKIE_sessionId') log.info("Extracted Session Id: ${cookieValue}") ``` 注意这里的关键词`sessionId`应替换为你所关心的实际属性名。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值