jmeter - JMeter 中的 SameSite cookie
问题描述
我正在为需要在 Chrome 中禁用“SameSite by default cookies”的站点开发 JMeter 测试,如下所示:
我正在测试的网站只返回 HTML 页面;它没有单独的 API 层。导致问题的主要元素是嵌入在 iframe 中的第三方组件。iframe 内容使用 SSO 向主站点进行身份验证。在 Chrome 中,如果 SameSite 设置设置为默认值,我将获得第三方组件的登录页面,而不是看到组件呈现。如果 SameSite 设置设置为已禁用,则第三方组件会正确呈现。
当我在 JMeter 中执行测试时,我遇到了与 Chrome 中“默认 cookie 相同的站点”设置为默认时遇到的相同问题——具体来说,我被重定向到登录页面。
但是,当我在 Postman 中执行相同的 HTTP 请求序列时,一切正常。
JMeter 是否内置了一些 SameSite cookie 行为,如果有,我该如何禁用它?
更新:按照 Dmitri 的建议,我尝试了所有不同的 cookie 管理器。
我还启用了 cookie 管理器日志记录。如果我将 HTTP Cookie 管理器的 Cookie 策略设置为默认值,cookie 上的“过期”属性会导致错误:
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]
...
如果我根据 HTTPClient 文档将 Cookie 策略设置为标准——“符合 RFC 6265 的策略(互操作性配置文件)”——我在日志中看不到任何 cookie 错误消息,但我仍然被重定向到登录页面.
解决方案
如果您正在测试的应用程序在Set-Cookie标头中发送格式错误的 cookie,JMeter 可能会拒绝与HTTP 请求采样器的当前域不匹配或因任何其他原因过期或无效的 cookie。
您可以通过以下方式“告诉”JMeter 限制较少:
选择更“宽松”的cookie 策略,即
netscape
在HTTP Cookie 管理器中- 将
CookieManager.check.cookies=true
行添加到user.properties文件(需要重新启动 JMeter 才能获取该属性)
如果上述步骤没有帮助,您可以:
通过将下一行添加到log4j2.xml文件来增加 HTTP Cookie 管理器和朋友的 JMeter 日志记录详细程度:
<Logger name="org.apache.jmeter.protocol.http.control" level="debug" />
最后但并非最不重要的一点是,您始终可以
Set-Cookie
使用 ie正则表达式提取器从上述标头中提取 cookie,并使用HTTP 标头管理器手动将它们添加到下一个请求
推荐阅读
- nginx - 应用程序完成但未读取 Kestrel 中的整个请求正文错误,.NET Core with NGiNX
- java - Javax REST 响应实体 = null
- javascript - 如何在 javascript 中制作可点击的电话链接?
- reactjs - 如何在输入 React Hooks 时阻止 Editor DraftJS 光标跳到文本的开头?
- polymer-1.0 - paper-item 的并排显示(Inside paper-menu,Inside paper-menu-button)
- c# - 多次启动windows服务
- laravel - /public 在更新 .htaccess 文件后仍然出现在某些 URL 中,但没有出现在其他 URL 中
- c - 递归 realloc() 在第 7 个 cicle 之后抛出“无效的下一个大小”
- html - 将图像对齐在右侧
- sql - SQL - 根据月份和日期过滤值