如何传递Cookie到Jmeter POST请求



我正在管理通过cookie数据与html cookie管理器http请求时,他们得到请求,但我的post请求保持与[no cookies]即使html cookie管理器设置。

配置如下:

一个post请求和一个重定向到设置手动提供的cookie的get请求。手动提供的cookie应该在第一个post请求中使用…

如何将cookie传递给post请求?

谢谢

我找到了一个解决方法:

我传递cookie值与名称Cookie的http头管理器和值的cookie值由一个;分隔

这不是很实用,因为如果你想重用以前线程组设置的cookie变量来进行csrf认证,你不能在头文件中使用变量(参见:https://stackoverflow.com/a/44463142: HTTP头文件管理器在任何线程启动之前初始化,所以你也不能在那里使用变量)

所以你必须在第一个线程组中使用BeanShell后处理器,并添加:

${__setProperty(property_name, ${COOKIE_cookie_name})};

然后将property_name传递到cookie值到http头管理器中的第二个线程组,名称:Cookie和值:

cookie_name=${__property(property_name)};

将HTTP Cookie Manager添加到您的测试计划中就足够了,它将自动处理Cookie。

的作用是:

  1. 从Set-Cookie头中提取cookie并在内部存储
  2. 下一个请求,如果有一个匹配的域名和路径和cookie没有过期,它发送相关的cookie(s)通过cookie头

如果您没有看到第二个请求的cookie,可能是由以下原因之一引起的:

  1. 您没有从服务器接收任何cookie,即您的登录尝试以某种方式失败,使用View Results Tree侦听器检查请求和响应详细信息,并确保您的测试正在做它应该做的事情做

  2. 您从服务器接收的cookie有问题,即域/路径不匹配或过期日期问题,您可以启用HTTP cookie管理器的调试日志记录,可以通过在log4j2.xml文件中添加下一行来完成:

    <Logger name="org.apache.jmeter.protocol.http.control" level="debug" />
    

    在JMeter重新启动后,您应该在JMeter .log文件

    中看到关于传入和传出cookie的详细信息。

更多信息:HTTP Cookie Manager高级使用指南

最新更新