【问题标题】:JMeter Beanshell adds backslash to cookies valuesJMeter Beanshell 为 cookie 值添加反斜杠
【发布时间】:2017-12-29 01:26:22
【问题描述】:

我正在为其准备性能脚本的应用程序是在 Sails 上实现的,并使用 cookie 来验证 API 调用的身份验证。使用 JMeter 的 HTTP Cookie 管理器并没有帮助,因为它没有记录所有 cookie 值。我可以使用 beanshell 预处理器手动添加它们

beanshell代码的sn-p:

CookieManager manager = sampler.getCookieManager();
Cookie cookie1 = new Cookie("cookie1","someValue","localhost","/",false,0);
manager.add(cookie1);

此代码成功地将 cookie1 添加到 JMeter 中的 cookie 中。

我还需要添加另一个值类似于 JSON 的 cookie。

CookieManager manager = sampler.getCookieManager();
Cookie jsonCookie = new Cookie("cookie1","{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}","localhost","/",false,0);
manager.add(jsonCookie);

这个新 cookie (jsonCookie) 的值在 Debug Sampler 中看起来不错。当我在请求中查找相同的 cookie 时,Cookie 变量的双引号中添加了额外的转义字符。

Http Request Cookie Data:
cookie1=somevalue;jsonCookie="{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}"
Debug Sampler value
COOKIE_cookie1=somevalue
COOKIE_jsonCookie="{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}" 

在 cookie 数据中添加额外的转义字符导致身份验证失败。如何确保 cookie 值没有这些额外的转义字符?

我尝试从用户定义的变量中获取这些 json 值,并直接在 Beanshell 预处理器中传递它们。在这两种方法中,生成的 cookie 值是相同的。

【问题讨论】:

  • " 被某些 cookie 标准视为不安全字符,因此被转义。您可以尝试在 CookieManager 中使用不同的“cookie 策略”,看看是否有帮助。最重要的是,HTTP 请求的特定实现也可能不一致,您将不得不使用它们。总共 9x2 选项

标签: json cookies jmeter backslash beanshell


【解决方案1】:

您可以将“Cookie 政策”下拉菜单更改为 netscape 以删除这些“多余的斜线”

实际上我认为这里不需要编写脚本,因为您可以通过 User-Defined Cookies 部分添加自定义 cookie,例如:

还有一些建议:

  1. 不要在与 JMeter 相同的机器上运行 JMeter 和被测应用程序可能会非常占用大量资源,并且您可能会遇到 JMeter 和被测应用程序为操作系统资源而苦苦挣扎的情况
  2. 如果您必须编写脚本,请考虑切换到 JSR223 PreProcessorGroovy 语言,因为当涉及到高负载时 Beanshell performance might be a big question mark

【讨论】:

  • 谢谢@Dmitri T。它就像一个魅力,正是我正在寻找的东西:)
猜你喜欢
  • 2015-10-23
  • 2012-05-06
  • 2019-07-04
  • 2016-07-09
  • 1970-01-01
  • 2010-10-17
  • 2021-12-31
  • 2016-06-14
  • 1970-01-01
相关资源
最近更新 更多