Jmeter学习(四)—http cookie manager

本文介绍JMeter中HTTP Cookie Manager的工作原理及其配置方法。包括自动收集和手动添加Cookies的过程,特别指出2.3.2版本后对Cookies管理的同源限制及如何通过配置支持跨域。
现在对于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

修改JMeter.property :

 CookieManager.name.prefix=${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文件即可。

JMeter 中,HTTP Cookie 管理器用于模拟浏览器行为,在多个请求之间自动管理 Cookie。这对于测试需要维持会话状态的 Web 应用程序至关重要。以下是使用 HTTP Cookie 管理器的详细指南: ### 配置 HTTP Cookie 管理器 1. **添加 HTTP Cookie 管理器** - 在测试计划中,右键点击“线程组” > “添加” > “配置元件” > “HTTP Cookie 管理器”。 - 该组件会自动将服务器返回的 Set-Cookie 头信息存储,并在后续请求中自动附加相应的 Cookie。 2. **设置 Cookie 管理器参数** - **Policy**:选择 Cookie 的策略(如 Netscape、RFC 2109、RFC 2965、Standard)。 - **Security Manager**:启用安全管理器以确保只接受安全连接的 Cookie。 - **Clear Cookies each Iteration?**:若勾选,则每次迭代开始时清除所有 Cookie。 - **Cookie Data**:可手动添加静态 Cookie,例如名称、值、域名、路径等[^2]。 3. **验证 Cookie 是否生效** - 使用“查看结果树”监听器检查响应头是否包含 Set-Cookie。 - 检查后续请求是否在请求头中自动添加了 Cookie 字段[^1]。 ### 实际应用场景 - **登录会话保持** - 当用户登录后,服务器通常会在响应头中设置 Session CookieHTTP Cookie 管理器会自动保存并附加到后续请求中,从而模拟已登录状态。 - 示例场景: ```http POST /login Host: example.com Response: HTTP/1.1 200 OK Set-Cookie: JSESSIONID=abc123; Path=/; HttpOnly ``` - **跨域 Cookie 管理** - 默认情况下,Cookie 管理器遵循同源策略。如需支持跨域 Cookie,需在 Cookie 数据中手动指定 Domain 和 Path[^4]。 - **与 Token 身份验证对比** - Cookie 更适用于传统 Web 应用,由服务器自动管理生命周期和安全性。 - Token(如 JWT)更适用于 RESTful API 和前后端分离架构,需手动在请求头中添加 Authorization 字段[^4]。 ### 常见问题排查 - **Cookie 未被正确存储** - 检查响应头是否包含 `Set-Cookie`。 - 确保 Cookie 管理器位于 Sampler 上方,以便优先处理。 - 查看 Cookie 管理器的 Policy 设置是否匹配服务器发送的 Cookie 格式。 - **无法维持登录状态** - 确认是否启用了“Clear Cookies each Iteration?”选项。 - 使用“Debug Sampler”检查当前线程上下文中的 Cookie 存储情况。 - **Cookie 跨域失效** - 若请求地址与 Cookie 域名不一致,请手动编辑 Cookie 数据中的 Domain 字段为 `.example.com` 以支持子域。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值