【问题标题】:Jmeter returns JSESSIONID Cookie expiration time as 0 however browser resturns "Session"Jmeter 返回 JSESSIONID Cookie 过期时间为 0 但是浏览器返回“会话”
【发布时间】:2020-04-22 21:36:46
【问题描述】:

实际上,当我通过 Jmeter 发出一个 http 请求时,我会得到各种 cookie 的值,如附图所示,然后是其中一个请求响应 500 错误。

另外,当我在浏览器中查看这些 cookie 时,它​​们的过期时间值为“Session”,并且请求在那里运行良好。

此外,如果我手动将 JSESSIONID 粘贴到 Jmeter 的请求标头中。那里也很好。

我尝试了各种方法将其传递给后续请求:-

a) Http Cookie 管理器 b) 用于共享变量的 Beanshell 处理器。 c) WDS 获取会话 id 并传递。

等等

这里我也附上一张图片供浏览器参考。

如果有人可以帮助解决上述问题,那就太好了。

谢谢。

【问题讨论】:

    标签: session cookies jmeter jsessionid


    【解决方案1】:

    查看HTTP cookies章节:

    GET /sample_page.html HTTP/2.0
    Host: www.example.org
    Cookie: yummy_cookie=choco; tasty_cookie=strawberry
    

    会话 cookie

    上面创建的 cookie 是一个会话 cookie:它在客户端关闭时被删除,因为它没有指定 Expires 或 Max-Age 指令。但是,网络浏览器可能会使用会话恢复,这会使大多数会话 cookie 永久化,就好像浏览器从未关闭过一样。

    请参阅RFC 6265 了解浏览器应如何处理“Expires”属性:

    5.2.1。过期属性

    如果属性名不区分大小写地匹配字符串 “过期”,用户代理必须按如下方式处理 cookie-av。

    令到期时间为将属性值解析为的结果 cookie 日期(请参阅 Section 5.1.1)。

    如果属性值无法解析为 cookie 日期,则忽略 cookie-av。

    如果到期时间晚于用户代理可以执行的最后日期 表示,用户代理可以将到期时间替换为最后一个 可表示的日期。

    另请注意since JMeter 3.1 you should be using JSR223 Test Elements and Groovy language 用于编写脚本,有关详细信息,请参阅Apache Groovy - Why and How You Should Use It 文章

    【讨论】:

    • 嗯,这里的问题是服务器对请求的响应包括 - a) 到期时间 0 b) 路径为“/some-path”。此外,cookie 是 http-only。现在,像 WebDriver 中的“getCookies()”和 Javascript 中的“document.cookie”这样的方法没有帮助,因为它们无法到达根目录以外的路径。另一方面,如果我从 Jmeter 等工具发出此请求,则会返回 0 过期时间,这意味着它一旦到达客户端就会变得无效,因为它不是可以维护会话的浏览器。这就是为什么我将 Session 视为此 cookie 的 Expiration 值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2017-09-28
    • 2020-12-05
    • 2021-09-12
    相关资源
    最近更新 更多