我正在为需要在Chrome中禁用“默认情况下的Cookie的SameSite”的网站开发JMeter测试,如下所示:
Turn off samesite enforcement in chrome version > 80
我正在测试的网站仅返回HTML页面;它没有单独的API层。引起问题的主要因素是嵌入iframe中的第三方组件。 iframe内容使用SSO向主站点进行身份验证。在Chrome中,如果将SameSite设置设置为默认,我将获得第三方组件的登录页面,而不是看到该组件的渲染。如果SameSite设置设置为“禁用”,则第三方组件将正确呈现。
当我在JMeter中执行测试时,当“默认情况下,SameSite cookie”设置为“默认”时,我遇到了与Chrome中相同的问题-具体来说,我被重定向到登录页面。
但是,当我在Postman中执行相同的HTTP请求序列时,一切正常。
JMeter是否内置一些SameSite cookie行为,如果是,如何禁用它?
更新:按照Dmitri的建议,我尝试了所有不同的cookie管理器。
我还启用了cookie管理器日志记录。如果我将HTTP Cookie Manager的Cookie策略设置为默认,则cookie上的“ expires”属性会导致错误:
2020-03-27 12:56:58,613 ERROR o.a.j.p.h.c.HC4CookieHandler: Unable to add the cookie
org.apache.http.cookie.MalformedCookieException: Invalid 'expires' attribute: Fri, 03 Apr 2020 17:56:54 GMT
at org.apache.http.impl.cookie.BasicExpiresHandler.parse(BasicExpiresHandler.java:64) ~[httpclient-4.5.10.jar:4.5.10]
at org.apache.http.impl.cookie.CookieSpecBase.parse(CookieSpecBase.java:113) ~[httpclient-4.5.10.jar:4.5.10]
at org.apache.http.impl.cookie.DefaultCookieSpec.parse(DefaultCookieSpec.java:140) ~[httpclient-4.5.10.jar:4.5.10]
at org.apache.jmeter.protocol.http.control.HC4CookieHandler.addCookieFromHeader(HC4CookieHandler.java:124) [ApacheJMeter_http.jar:5.2.1]
...
如果我将Cookie策略设置为标准-每个HTTPClient文档均设置为“符合RFC 6265的策略(互操作性配置文件)”-我在日志中看不到任何Cookie错误消息,但仍会重定向到登录页面。
答案 0 :(得分:1)
如果您正在测试的应用程序在Set-Cookie标头中发送格式错误的cookie,则JMeter可能会拒绝与HTTP Request采样器的当前域不匹配或由于任何其他原因而过期或无效的cookie。
您可以通过以下方式“告诉” JMeter限制较少:
选择更多“放松”的cookie policy,即HTTP Cookie Manager中的netscape
CookieManager.check.cookies=true
行(需要重新启动JMeter才能拾取该属性)更多信息:HTTP Cookie Manager Advanced Usage - A Guide
如果上述步骤对您没有帮助:
在 log4j2.xml 文件中添加下一行,从而提高HTTP Cookie管理器和朋友的JMeter日志记录详细程度:
<Logger name="org.apache.jmeter.protocol.http.control" level="debug" />
最后但并非最不重要的一点是,您始终可以使用Regular Expression Extractor从上述Set-Cookie
标头中提取Cookie,并使用HTTP Header Manager