2012-10-19 44 views
8

我构建了非常简单的测试计划。Apache JMeter的Cookie管理器不会将Cookie添加到POST请求

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

所以我的 '测试计划' 的样子:

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

通过 '登录' 产生的cookie被正确添加到 '获得国家'。
但'创建资源'没有cookie。我改变了他们的顺序,但没有帮助。 我首先使用了默认选项,并更改了一些选项,但它也没有帮助。

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

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

+0

感谢您使用您的解决方案更新您的问题。这帮助了我。 –

+1

嗨,你能解释一下......你如何做到这一点? – behinddwalls

+0

只是为了防止其他人面临同样的问题,启用跟踪重定向解决了我的cookie问题 – mezzie

回答

3

另一种解决方案是在jmeter.properties中设置CookieManager.check.cookies = false,通常除了bin中的jmeter启动脚本之外。

由于某些原因,JMeter认为如果您使用http:/ somesite/somethingelse,则无法在cookie中设置path =/something。这是路径必须匹配你目前的路径。

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

我希望这个选项至少在GUI中,所以我不必更改属性文件。我认为BlazeMeter足够聪明,可以关闭检查flood.io不在的位置。如果这取决于我,我只是删除完全检查它的代码。为什么要使负载测试仪变得更加困难,那就需要。