【问题标题】:jmeter -not adding authorization header to all http requestsjmeter - 不向所有 http 请求添加授权标头
【发布时间】:2020-10-11 15:05:54
【问题描述】:

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

  • 线程组
  • 录音控制器
  •   HTTP Authorization manager 
    
  •   GET https://xxxx/user/login
    
  •   GET https://xxxx/accounts/list
    
  •   GET https://xxxx/user/settings
    
  •   GET https://xxxx/partners/list
    
  •   GET https://xxxx/user/logout
    

当我运行它时,我看到 jmeter 在第一个用户/登录请求中添加了授权标头,并且服务器以 200 OK 响应。没关系

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

jmeter 没有在后续的帐户/列表请求中添加授权标头 - 这没关系

但随后 jmeter 将授权标头添加到后续用户/设置请求中 - 这是不需要的,因为它破坏了发送会话令牌的目的。

再次,jmeter 没有在合作伙伴/列表中发送身份验证令牌,而是在用户/注销请求中再次发送。

那么问题是 jmeter 如何确定何时添加 auth 标头以及何时不添加?

我想要的行为是 jmeter 在第一个用户/登录请求中发送 auth 标头,但不在任何后续 http 请求中。

任何指针表示赞赏。

谢谢

【问题讨论】:

    标签: http jmeter header authorization


    【解决方案1】:

    HTTP 授权管理器会将Authorization 标头添加到所有 HTTP 请求采样器它的范围,如果您将它与 HTTP 请求采样器放在同一级别 - 它会将标头添加到 全部。

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

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

    【讨论】:

      【解决方案2】:

      录制任何场景都会在所有 Http 请求中添加 Header Manager。

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

      1. 删除accounts/list,user/settings,partners/list & logout下所有后续的Header Manager。
      2. 发布登录请求 > 提取会话 > 在登录请求后添加标头管理器并在那里传递会话。
      3. 所有进一步的请求都应该在同一个线程中,以便将会话传递给每个请求。

      此外,在记录时,会捕获多个请求,并且对于每个场景,Jmeter 都会在 Header Manager 下维护会话,因此绝不应该出现一个请求正在获取会话而其他请求没有的情况。

      【讨论】:

        【解决方案3】:

        感谢您的帮助。

        与此同时,我所做的并且做得很好的是使用 beanshell 预处理器向用户/登录请求添加一个明确的授权标头,以对用户名/密码进行 base64 编码。

        还是谢谢

        【讨论】:

          猜你喜欢
          • 2017-01-04
          • 2019-01-10
          • 1970-01-01
          • 1970-01-01
          • 2018-05-04
          • 2018-11-25
          • 2014-12-28
          • 2020-03-29
          • 1970-01-01
          相关资源
          最近更新 更多