jmeter - 不向所有 http 请求添加授权 header

jmeter -not adding authorization header to all http requests

我有一个相当简单的测试计划,其中记录了以下步骤

当我 运行 这样做时,我看到 jmeter 在第一个 user/login 请求中添加了授权 header 并且服务器响应 200 OK。这个可以

我从登录响应中提取 session 令牌并将其作为变量放入后续的 http 请求中。

jmeter 未在后续 accounts/list 请求中添加授权 header - 这没关系

但是随后 jmeter 将授权 header 添加到后续的 user/settings 请求中 - 这不是必需的,因为它违背了发送 session 令牌的目的。

jmeter 再次没有在 partners/list 中发送身份验证令牌,而是在 user/logout 请求中再次发送它。

所以问题是 jmeter 如何确定何时添加身份验证 header 以及何时不添加?

我想要的期望行为是让 jmeter 在第一个 user/login 请求中发送 auth header,但不在任何后续的 http 请求中发送。

感谢任何指点。

谢谢

记录任何场景会在所有 Http 请求中添加 Header 管理器。

您正在以正确的方式进行操作,但是您仍然需要对脚本进行一些更改才能无缝 运行。

  1. 删除accounts/list、user/settings、partners/list下的所有后续Header管理员并注销。
  2. Post 登录请求 > 提取 session > 在登录请求后添加一个 Header 管理器并在那里传递 session。
  3. 所有进一步的请求都应该在同一个线程中,以便 session 传递给每个请求。

此外,在记录时,有多个请求被捕获,并且对于每个场景,Jmeter 在 Header 管理器下维护 session,因此永远不会出现一个请求正在获取 session 而其他人则没有。

如果您将它与HTTP 请求采样器 - 它会将 header 添加到 所有

如果您只需要将 HTTP 授权管理器应用于第一个采样器 - 将其移动到第一个采样器的 child。

更多信息:JMeter Scoping Rules - The Ultimate Guide

感谢您的回答。

同时我所做的并且工作得很好的是使用 beanshell 预处理器向 user/login 请求添加显式授权 header 以对用户名/密码进行 base64 编码。

无论如何谢谢