JMeter 在测试期间更改 HTTP 标头

问题描述 投票:0回答:3

我正在尝试使用 JMeter 测试 HTTP 服务。 HTTP 服务需要通过简单的承载令牌机制进行身份验证。我正在尝试按如下方式进行:

  1. POST 身份验证请求
  2. 将令牌存储为变量
  3. 将授权 HTTP 标头设置为存储的变量
  4. 请求受保护的资源
  5. 评估绩效

到目前为止,我已经能够发布请求,获取令牌,使用正则表达式提取它,将其保存到变量中,并断言该变量已正确设置。

问题在于如何将变量放入 HTTP 标头中。在“标题管理器”中,值设置如下:

Header Manager Attempt

不幸的是,当发出下一个请求时,其授权标头的值为“Bearer”。在互联网上搜索使我相信标头是在线程启动之前配置的,这可以解释“承载” 我的采样/分组/嵌套如下:

JMeter Nesting所有测试都通过以获取受限资源,但由于授权标头格式错误,因此失败并返回 400。

我觉得我错过了一些非常明显的东西,和/或以错误的方式解决这个问题。

http-headers jmeter
3个回答
40
投票
Beanshell PreProcessor

动态构建授权标头,如下所示:

    添加
  1. HTTP 标头管理器作为需要授权的请求的子项

  2. 使用以下代码将 Beanshell PreProcessor 添加为同一请求的子级:
  3. import org.apache.jmeter.protocol.http.control.Header; sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("BEARER")));

    
    
  4. 这将使用
BEARER

变量构造完全动态的标头。


    sampler
  • HTTPSamplerProxy
    类的简写,它可以访问父 Sampler 实例
  • vars
  • JMeterVariables
    类的实例,它允许读/写访问当前上下文(通常是当前线程组)范围内可用的所有JMeter变量
  • 请参阅
如何使用 BeanShell:JMeter 最喜欢的内置组件

指南,了解有关 Beanshell 脚本和 Beanshell 说明书的更多详细信息。


18
投票

-1
投票

导入org.apache.jmeter.protocol.http.control.Header; Sampler.getHeaderManager().remove(0);

欲了解更多详情,请参阅:-

https://jmeterblogb.blogspot.in/2016/10/add-empty-header-in-jmeter-sample.html

© www.soinside.com 2019 - 2024. All rights reserved.