当http请求是get请求时,我设法用html cookie管理器将cookie数据传递给http请求,但即使设置了html cookie管理器,我的post请求仍保留在[no cookies]中。其结构为:一个post请求和一个重定向到设置手动提供的cookie的get请求。手动提供的cookie应该在第一个post请求中使用...我如何将cookie传递给post请求?谢谢你
[no cookies]
vcudknz31#
我找到了一个解决方法:我将cookie值传递给名为Cookie的http标头管理器,并将value传递给以;分隔的cookie值这不是很实用,因为如果您想重用csrf身份验证的前一个线程组设置的cookie变量,则不能在头中使用变量(请参见:https://stackoverflow.com/a/44463142:HTTP头管理器在任何线程启动之前初始化,因此也不能在那里使用变量。)因此,您必须在第一个线程组中使用BeanShell后处理器,并添加:
Cookie
;
${__setProperty(property_name, ${COOKIE_cookie_name})};
然后将property_name传递给http标头管理器中的第二个线程组的cookie值,其名称为:Cookie和值:
cookie_name=${__property(property_name)};
lawou6xi2#
在您的测试计划中添加一个HTTP Cookie Manager就足够了,它将自动处理Cookie。它的作用是:1.从Set-Cookie header中提取cookie并将其存储在内部1.在下一次请求时,如果域和路径匹配,并且cookie未过期,则通过Cookie header发送相关cookie如果您没有看到第二个请求的Cookie,则可能是由于以下原因之一:1.您没有从服务器接收到任何Cookie,即您的登录尝试因某种原因而失败,请使用View Results Tree监听器检查请求和响应详细信息,并确保您的测试正在执行预期的操作1.您从服务器接收的Cookie有问题,例如网域/路径不相符或到期日问题,您可以启用HTTP Cookie管理员的除错记录,方法是将下一行加入 log4j2.xml 档案:
<Logger name="org.apache.jmeter.protocol.http.control" level="debug" />
并且在JMeter重新启动之后,您应该在jmeter.log文件中看到关于传入和传出cookie的详细信息更多信息:HTTP Cookie Manager Advanced Usage - A Guide
2条答案
按热度按时间vcudknz31#
我找到了一个解决方法:
我将cookie值传递给名为
Cookie
的http标头管理器,并将value传递给以;
分隔的cookie值这不是很实用,因为如果您想重用csrf身份验证的前一个线程组设置的cookie变量,则不能在头中使用变量(请参见:https://stackoverflow.com/a/44463142:HTTP头管理器在任何线程启动之前初始化,因此也不能在那里使用变量。)
因此,您必须在第一个线程组中使用BeanShell后处理器,并添加:
然后将property_name传递给http标头管理器中的第二个线程组的cookie值,其名称为:
Cookie
和值:lawou6xi2#
在您的测试计划中添加一个HTTP Cookie Manager就足够了,它将自动处理Cookie。
它的作用是:
1.从Set-Cookie header中提取cookie并将其存储在内部
1.在下一次请求时,如果域和路径匹配,并且cookie未过期,则通过Cookie header发送相关cookie
如果您没有看到第二个请求的Cookie,则可能是由于以下原因之一:
1.您没有从服务器接收到任何Cookie,即您的登录尝试因某种原因而失败,请使用View Results Tree监听器检查请求和响应详细信息,并确保您的测试正在执行预期的操作
1.您从服务器接收的Cookie有问题,例如网域/路径不相符或到期日问题,您可以启用HTTP Cookie管理员的除错记录,方法是将下一行加入 log4j2.xml 档案:
并且在JMeter重新启动之后,您应该在jmeter.log文件中看到关于传入和传出cookie的详细信息
更多信息:HTTP Cookie Manager Advanced Usage - A Guide