【发布时间】: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