【P6】JMeter HTTP Cookie管理器(HTTP Cookie Manager)


一、HTTP Cookie管理器(HTTP Cookie Manager)

如果你有一个 HTTP 请求,其返回结果里包含一个 cookie,那么 Cookie 管理器会自动将该 cookie 保存起来,而且以后所有的对该网站的请求都使用同一个 cookie

右键 >>> 添加 >>> 配置元件 >>> HTTP Cookie管理器

在这里插入图片描述

选项(Options)

(1)、每次反复清除Cookies?(Clear cookies each iteration?):每次迭代时,都将 Cookies 清空

(2)、Use Thread Group configuration to control cookie clearing:用户线程组去配置清空 Cookie

(3)、Cookie 格式

  • standard:标准格式

  • standard-strict:严格格式

  • ignoreCookies:此规格忽略所有 Cookie。被用来防止 HttpClient 接受和发送的 Cookie

  • netscape:是最原始的 Cookies 规范,同时也是 RFC2109 的基础。尽管如此,还是在很多重要的方面与 RFC2109 不同,可能需要特定服务器才可以兼容

  • default:默认

  • rfc2109:是 HttpClient 使用的默认 Cookies 协议

  • rfc2965:定义了版本2并且尝试去弥补在版本1中 Cookie 的 rfc2109 标准的缺点。规定 rfc2965 最终取代 rfc2109 发送 rfc2965 标准 Cookies 的服务端,将会使用 Set-Cookie2 header 添加到 Set-Cookie Header 信心中,rfc2965 Cookies 是区分端口的

  • compatibility:推荐选择此种策略。这种兼容性设计要求是适应尽可能多的不同的服务器,尽管不是完全按照标准来实现的。如果你遇到了解析 Cookies 的问题,你就可能要用到这一个规范。有太多的 web 站点是用 CGI 脚本去实现的,而导致只有将所有的 Cookies 都放入 Request header 才可以正常的工作。这种情况下最好设置 http.protocol.single-cookie-header 参数为 true

存储在Cookie管理器中的Cookie(User-Defined Cookies)

  • 自定义 Cookie,可以手动添加

二、测试网站

慕慕生鲜: http://111.231.103.117/#/login

  • 页面提供登录了用户名和密码

  • 按F12或右键检查,网络中获取登录信息

在这里插入图片描述

三、Cookie 设置规则

2.1、无配置元件时,Cookie 不会自动设置(与线程组设置无关)

(1)、Test Plan 右键 <<< 添加 <<< 配置元件 <<< HTTP请求默认值

在这里插入图片描述

  • 协议:http

  • 服务器名称或IP:111.231.103.117

  • 端口:8083

  • 内容编码:utf-8

  • 高级中可以设置超时(毫秒),连接:5000;响应:1000

(2)、网页调试工具中,点击标头,找到请求标头,全部选中,复制

(3)、Test Plan 右键 <<< 添加 <<< 配置元件 <<< HTTP信息头管理器 <<< 从剪切板添加(会自动添加好)

在这里插入图片描述

(4)、Test Plan 右键 <<< 添加 <<< 线程(用户)<<< 线程组

在这里插入图片描述

(5)、线程组右键 <<< 添加 <<< 取样器 <<< HTTP请求 <<< 从剪切板添加(会自动添加好)

在这里插入图片描述

  • 请求方法:GET

  • 路径:/login

  • 添加参数,用户名和密码

(6)、线程组右键 <<< 添加 <<<监听器 <<< 查看结果树

(7)、点击启动

在这里插入图片描述

在这里插入图片描述

  • 第一个和第二个请求为同一个线程,因为循环迭代两次,所以第二个请求还是在同一个线程里。同理,第三个和第四个请求为同一个线程

  • 可以看到,第一次 HTTP请求中的响应数据,响应头中返回了一个 Cookie

  • 第二次再次方式 HTTP请求时,在请求的请求体中并没有带 Cookie

(8)、取消勾选线程组中的 Same user on each iteration,再次运行

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

没有配置元件(HTTP Cookie管理器),Cookie 不会自动设置,线程组中的 Same user on each iteration 勾不勾选意义不大

2.2、有配置元件,不选任何参数时,Cookie 自动设置(与线程组设置无关)

(1)、Test Plan 右键 <<< 添加 <<< 配置元件 <<< HTTP Cookie管理器

在这里插入图片描述

  • 自定义一个 Cookie

(2)、线程组不勾选 Same user on each iteration,启动

在这里插入图片描述

(3)、线程组勾选 Same user on each iteration,启动

在这里插入图片描述

(4)、点击查看结果树,查看请求信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 第一个和第二个请求为同一个线程,因为循环迭代两次,所以第二个请求还是在同一个线程里。同理,第三个和第四个请求为同一个线程

  • 前两个请求为线程组勾选了 Same user on each iteration,后两个为线程组未勾选 Same user on each iteration

  • 第一个 Cookie 为自定义设置的,红框中的为请求所返回的响应头中的 Cookie

有配置元件(HTTP Cookie管理器),Cookie 会自动设置,线程组中的 Same user on each iteration 勾不勾选意义不大

2.3、有配置元件,选上清空策略时,优先取配置元件(每一次迭代会清空 Cookie,与线程组设置无关)

(1)、HTTP Cookie管理器勾选每次反复清除Cookies?

在这里插入图片描述

(2)、线程组不勾选 Same user on each iteration,启动

在这里插入图片描述

(3)、线程组勾选 Same user on each iteration,启动

在这里插入图片描述

(4)、点击查看结果树,查看请求信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 第一个和第二个请求为同一个线程,因为循环迭代两次,所以第二个请求还是在同一个线程里。同理,第三个和第四个请求为同一个线程

  • 前两个请求为线程组未勾选了 Same user on each iteration,后两个为线程组勾选 Same user on each iteration

  • 第一个 Cookie 为自定义设置的,可以看到只有一个自定义的 Cookie

有配置元件(HTTP Cookie管理器),选择清空策略时,Cookie 不会自动设置,线程组中的 Same user on each iteration 勾不勾选意义不大

2.4、有配置元件,选择参考线程组时,看线程组设置(分2种情况)

(1)、HTTP Cookie管理器勾选 Use Thread Group configuration
to control cookie clearing

在这里插入图片描述

(2)、线程组不勾选 Same user on each iteration,启动

在这里插入图片描述

(3)、线程组勾选 Same user on each iteration,启动

在这里插入图片描述

(4)、点击查看结果树,查看请求信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 第一个和第二个请求为同一个线程,因为循环迭代两次,所以第二个请求还是在同一个线程里。同理,第三个和第四个请求为同一个线程

  • 前两个请求为线程组未勾选了 Same user on each iteration,后两个为线程组勾选 Same user on each iteration

有配置元件(HTTP Cookie管理器),选择参考线程组时(Use Thread Group configuration to control cookie clearing),线程组中的 Same user on each iteration 才会生效,勾选后 Cookie 会自动设置。参考第四个请求信息

2.5、Cookic 是作用在线程级别的,不同线程的 Cookie 彼此完全独立

(1)、线程组设置线程数为2,循环次数为3

在这里插入图片描述

(2)、HTTP请求在名称处,添加 ${__threadNum} 用于获取线程号,点击启动

在这里插入图片描述

(3)、点击查看结果树,查看请求信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 第一个线程的三个请求,当第一个请求响应头返回 Cookie 后,后续此线程的第二个和第三个请求,会自动设置此 Cookie

  • 第二个线程所返回的 Cookie 和第一个线程所返回的 Cookie 不一致

不同的线程,会获取不同的 Cookie

2.6、通过 CookieManager.save.cookies=true 可以将 Cookie 保存为变量,名称固定以 COOKIE_ 开头可通过 CookieManager.name.prefix 定义

将获取的 cookie 保存并变成一个变量,后续可以方便使用这个 cookie 变量

(1)、在 Jmeter 安装路径下,打开 bin 目录,编辑 jemeter.properties,将 CookieManager.save.cookies 设置为 true,并去掉 #

在这里插入图片描述

(2)、线程组右键 <<< 添加 <<< 后置处理器 <<< Debug PostProcessor(调试后置处理程序)

Debug PostProcessor(调试后置处理程序):将一些属性变量打印出来
在这里插入图片描述

(3)、清空全部后,点击启动,点击查看结果树

在这里插入图片描述

  • 将请求的属性变量打印出来,点开后,在响应数据 <<< Response Body 中可查看

  • 一个 COOKIE_JSESSIONID 变量,存储着 Cookie 信息

  • 只要请求的 Response headers 响应头中有 Set-Cookie,就会相对应注册一个变量

(4)、线程组右键 <<< 添加 <<< 后置处理器 <<< JSR223 PostProcessor(JSR223 后置处理程序)

在这里插入图片描述

log.info("获取 cookie:"+vars.get("COOKIE_JSESSIONID"));

(5)、选项菜单中,点击日志查看,打开日志,清除全部后,启动

在这里插入图片描述

日志打印出了 cookie,可以使用 COOKIE_JSESSIONID 变量获取到 cookie

2.7、可以加入一些自定义 Cookie

(1)、在 HTTP Cookie管理器中设置自定义的 cookie

在这里插入图片描述

  • 名称、值:随意设置

  • 域:IP 或者域名

  • 路径:/

(2)、清除全部,点击启动,点击查看结果树,查看 cookie 信息

在这里插入图片描述

在请求的请求 <<< Request Body 下,有两个 cookie,其中第一个为自定义的 cookie,第二个为请求响应头中返回的 cookie

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿快跑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值