11

我建立了非常简单的测试计划。

  1. 登录:POST,返回一个会话cookie。
  2. 获取状态:GET,返回一个用户状态。
  3. 创建资源:POST,为资源提供 JSON 正文。

所以我的“测试计划”看起来像:

  • 测试计划
    • 线程组
      • HTTP 请求默认值
      • HTTP Cookie 管理器
      • 登录(HTTP 请求采样器:POST)
      • 获取状态(HTTP 请求采样器:GET)
      • 创建资源(HTTP 请求采样器:POST)

“登录”生成的 cookie 被正确添加到“获取状态”中。
但是“创建资源”没有 cookie。我改变了他们的订单,但没有帮助。我首先使用了默认选项并更改了一些选项,但它也无济于事。

这是JMeter的错误吗?或者只是 POST http 请求不能有 cookie?
请给我任何建议。

[已解决]
我注意到它与路径有关,而不是方法。
您想查看 cookie 的域以及路径。我的意思是,可以通过 Set-Cookie 标头在服务器端定义 cookie 的路径和域。

4

2 回答 2

6

另一种解决方案是在 jmeter.properties 中设置 CookieManager.check.cookies=false 通常位于 bin 中的 jmeter 启动脚本旁边。

由于某些原因,JMeter 认为如果您在 http:/somesite/somethingelse 上,则无法在 cookie 中设置 path=/something。那就是路径必须与您当前所在的路径相匹配。

如果确实存在,我从未见过浏览器强制执行此限制。我已经看到并编写了几个使用这种技术设置安全 cookie 然后将某人说的内容转发给 /admin 的网站。

我希望这个选项至少在 GUI 中,所以我不必更改属性文件。我认为 BlazeMeter 足够聪明,可以关闭检查 Flood.io 不在的位置。如果由我决定,我会删除完全检查这一点的代码。为什么要让负载测试器变得更难呢?

于 2013-12-20T19:33:22.537 回答
0

我在我的 Spring Boot 服务器中打开了这个,这导致 jMeter 中的 CookieManager 出现问题:

server.servlet.session.cookie.secure=true

删除它使饼干流动!当然这是针对本地主机的。对于生产,您可能需要打开它。

于 2019-05-03T18:15:00.080 回答