Apache JMeter的Cookie管理器不会将cookie添加到POST请求中

时间:2012-10-19 02:35:07

标签: cookies jmeter

我制定了非常简单的测试计划。

  1. 登录:POST,返回会话cookie。
  2. 获取状态:GET,返回用户状态。
  3. 创建资源:POST,为资源提供JSON正文。
  4. 所以我的'测试计划'看起来像:

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

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

    这是JMeter的错误吗?或只是POST http请求无法拥有cookie?
    请给我任何建议。

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

2 个答案:

答案 0 :(得分:3)

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

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

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

我希望这个选项至少在GUI中,所以我不必更改属性文件。我认为BlazeMeter非常聪明,可以关闭flood.io不在哪里。如果由我决定,我只需删除完全检查这一点的代码。为什么要使负载测试仪更难以满足需要。

答案 1 :(得分:0)

我在Spring Boot服务器中启用了此功能,这导致jMeter中的CookieManager出现问题:

server.servlet.session.cookie.secure = true

删除此选项将使cookie流动!当然这是为本地主机。对于正式版,您可能需要将其打开。