HTTP2 请求不遵循 JMeter 5.0 中的重定向

Posted

技术标签:

【中文标题】HTTP2 请求不遵循 JMeter 5.0 中的重定向【英文标题】:HTTP2 Request doesn't follow redirects in JMeter 5.0 【发布时间】:2019-04-09 22:03:06 【问题描述】:

我正在使用 Blazemeter 的 JMeter 的 HTTP2 插件,但无法使 HTTP2 请求遵循重定向。我尝试检查“Follow Redirects”框和“Synchronized Request”,但它不起作用。

我得到响应代码:301 和响应消息:HTTP/2.0 301 Moved Permanently 以及它应该在响应标头中重定向的位置 =>“位置”。

我正在尝试向“www.aoro.ro”(GET https://www.aoro.ro/)发出 HTTP2 请求,该请求应将我重定向到“https://www.notino.ro/”,但不遵循从响应标头获取的位置: HTTP/2.0 301 永久移动 地点:https://www.notino.ro/ 我被这个响应卡住了,不能使用基于重定向的断言。

我还尝试使用“HTTP 标头管理器”并从浏览器发送所有标头。我读到 HTTP2 版本的 HTTP 协议是异步的,这可能会干扰重定向。

您知道有关使用 HTTP2 插件在 JMeter 上重定向的任何信息吗?

【问题讨论】:

【参考方案1】:

在对 blazemeter.jmeter.http2.sampler 进行了深入研究后,我发现 HTTP2 采样器请求中没有实现 followRedirects() 方法strong>HTTP2Request.class 文件。

要获取此文件,您必须从 lib.ext 文件夹中的 jmeter-bzm-http2-1.4.jar 文件中提取文件,并且 .class 文件将位于 com\blazemeter \jmeter\http2\sampler 文件夹。在此步骤之后,您必须反编译 HTTP2Request.class 文件(使用在线工具:https://devtoolzone.com/decompiler/java)并使用 Notepad++ / Sublime 或任何其他程序打开它以查看脚本。

所以在这个插件的新版本发布之前,Follow Redirects/Autoredirect 将不起作用(没有实现)

【讨论】:

【参考方案2】:

我确认这是我在此处报告的 HTTP2 Request 的错误(因为在他们的 github 中没有报告问题):

https://groups.google.com/forum/#!topic/jmeter-plugins/ww-c5BkuRu4

你可以做的是使用Regular Expression Extractor自己处理它:

并像这样添加它:

然后在另一个 HTTP2 请求的路径字段中使用 $REDIRECT:

【讨论】:

这个错误报告在哪里?不遵循重定向似乎不是一个错误。我当然不想自动跟随重定向,尤其是在像 jmeter 这样的受控测试场景中。 这是一个错误,因为有一个复选框说在没有发生时跟随重定向。与核心 http 请求相比。 github repo没有问题报告,所以我在jmeter-plugins google group上报告了。 感谢您的解决方案和错误报告。尝试在响应标头上使用正则表达式并使用该位置手动实现“重定向”,它工作正常,但对于简短的 JMeter 脚本来说,这是一个很好的临时解决方案。我想从 HTTP1.1 切换到 HTTP2 一个完整的场景(login-search-add2basket 等)并手动重定向每个请求会给 JVM 带来高负载。所以希望你关于 jmeter-plugins google 组的报告会被注意到@UBIKLOADPACK 找出它为什么不遵循重定向,见下文。 @UBIKLOADPACK

以上是关于HTTP2 请求不遵循 JMeter 5.0 中的重定向的主要内容,如果未能解决你的问题,请参考以下文章

无法通过JMeter发送HTTP2请求

HTTP2 请求示例使用 Jmeter4 崩溃,Java 10 No Client ALPNProcessors

“文件上传”功能在带有 HTTP2 采样器的 Jmeter 中不起作用 [使用所有版本的 JMETER]

JMeter 在 GET 方法上遵循 POST 重定向

JMeter Web性能测试增强版系列1

Jmeter作用域