首页 > 解决方案 > Jmeter - HTTP Cookie 管理器和 HTTP 标头管理器冲突

问题描述

大家好。

我正在使用 JMeter,我发现 HTTP Cookie 管理器和 HTTP 标头管理器之间存在冲突。我不确定如何处理它。

应该做什么:

我需要将额外数据添加到“请求正文”中的“Cookie 数据:”部分。

我找到了这个解决方案:

  1. 添加“HTTP 标头管理器”。
  2. 添加名称:具有所需值的“Cookie”。 在此处输入图像描述
  3. 正如您从屏幕截图中看到的 - 我在“HTTP Header Manager”中添加“Cookie”值。结果,我得到了这个: 在此处输入图像描述
  4. 正如您从屏幕截图中看到的 - 我能够从“请求正文”将数据添加到“Cookie 数据:”请求中。

有什么问题:

  1. 我也使用“HTTP Cookie 管理器”。
  2. 当我使用来自“HTTP Cookie Manager”的数据和来自“HTTP Header Manager”的数据执行示例时 - JMeter 不会添加来自“HTTP Header Manager”的数据。 在此处输入图像描述
  3. 正如您从屏幕截图中看到的 - 我将“Cookie”标头添加到“HTTP 标头管理器”中。
  4. 因此,我希望将此数据放入请求的“Cookie 数据”区域。但是......我只看到数据来自“HTTP Cookie Manager”。 在此处输入图像描述
  5. 正如您从屏幕截图中看到的 - 请求的“Cookie 数据”部分中缺少“HTTP 标头管理器”中添加的数据。

我在谷歌研究并尝试了很多东西 - 但没有结果。

标签: cookiesjmeter

解决方案


我认为您不能同时使用两者,您有两个选择:

  1. 完全移除 HTTP Cookie Manager 并通过提取Set-Cookieheader值执行 cookie 的手动关联,执行必要的修改,构造所需的 cookie 并使用 HTTP Header Manager 设置所需的Cookieheader 值

  2. 使用JSR223 PreProcessor并使用 Groovy 代码动态修改 cookie 值。就像是:

    def manager = sampler.getCookieManager()
    
    0.upto(manager.getCookieCount(), { index ->
        def cookie = manager.get(index)
        if (cookie.getName() == 'cookie_you_are_looking_for') {
            cookie.setValue(cookie.getValue() + 'foo')
        }
    })
    
    sampler.setCookieManager(manager)
    

    更多信息:使用 Groovy 在 JMeter 中修改 Cookie


推荐阅读