如何将Cookie传递给Jmeter POST请求

sxissh06  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(213)

当http请求是get请求时,我设法用html cookie管理器将cookie数据传递给http请求,但即使设置了html cookie管理器,我的post请求仍保留在[no cookies]中。
其结构为:
一个post请求和一个重定向到设置手动提供的cookie的get请求。手动提供的cookie应该在第一个post请求中使用...
我如何将cookie传递给post请求?
谢谢你

vcudknz3

vcudknz31#

我找到了一个解决方法:
我将cookie值传递给名为Cookie的http标头管理器,并将value传递给以;分隔的cookie值
这不是很实用,因为如果您想重用csrf身份验证的前一个线程组设置的cookie变量,则不能在头中使用变量(请参见:https://stackoverflow.com/a/44463142:HTTP头管理器在任何线程启动之前初始化,因此也不能在那里使用变量。)
因此,您必须在第一个线程组中使用BeanShell后处理器,并添加:

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

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

cookie_name=${__property(property_name)};
lawou6xi

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

相关问题