当前位置: 首页 > 知识库问答 >
问题:

无法在Gatling中发送http/2请求

罗绪
2023-03-14

我在尝试发送超文本传输协议/2请求时遇到了使用gatling工具的问题。

我在协议设置中启用了超文本传输协议/2设置,甚至添加了映射以确保客户端将使用http2与服务器通信,但仍然使用超文本传输协议/1.1发送请求。

在控制台输出中,您将看到服务器可以使用http2进行通信,但由于某些原因,请求仅使用http1.1发送。

所有标题都是根据浏览器中的标题编写的。

有人能帮我解决这个问题吗?

package test

import scala.concurrent.duration._

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._

class RecordedSimulation extends Simulation {

    val httpProtocol = http
        .baseUrl("https://sitename")
        .inferHtmlResources(BlackList(""".*\.js""", """.*\.css""", """.*\.gif""", """.*\.jpeg""", """.*\.jpg""", """.*\.ico""", """.*\.woff""", """.*\.woff2""", """.*\.(t|o)tf""", """.*\.png""", """.*detectportal\.firefox\.com.*"""), WhiteList())
        .acceptHeader("*/*")
        .acceptEncodingHeader("gzip, deflate")
        .acceptLanguageHeader("en-US,en;q=0.5")
        .userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:85.0) Gecko/20100101 Firefox/85.0")
            .enableHttp2
        .http2PriorKnowledge(Map("sitename" -> true))
        .disableCaching
      .disableWarmUp

    val headers_0 = Map(
        "Accept" -> "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        "Cache-Control" -> "max-age=0",
        "sec-fetch-dest" -> "document",
        "sec-fetch-mode" -> "navigate",
        "sec-fetch-site" -> "none",
        "sec-fetch-user" -> "?1",
        "Upgrade-Insecure-Requests" -> "1")



    val scn = scenario("RecordedSimulation")
        .exec(http("request_0")
            .get("/auth?r=%2F&m=NOT_AUTHENTICATED")
            .headers(headers_0))
        .pause(2)

    setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}

在控制台中,我看到下一个:

DEBUG io.gatling.http.client.impl.DefaultHttpClient - ALPN led to HTTP/2 with remote sitename
DEBUG io.gatling.http.client.impl.Http2AppHandler - Write request WritableRequest{request=DefaultFullHttpRequest(decodeResult: success, version: HTTP/1.1, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))

GET https://sitename/auth?r=%2F&m=NOT_AUTHENTICATED HTTP/1.1
sec-fetch-site: none
Upgrade-Insecure-Requests: 1
If-Modified-Since: Fri, 29 Jan 2021 06:40:06 GMT
sec-fetch-dest: document
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Cache-Control: max-age=0
accept-encoding: gzip, deflate
If-None-Match: "1d6f60994776ee0"
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:85.0) Gecko/20100101 Firefox/85.0
accept-language: en-US,en;q=0.5
sec-fetch-mode: navigate
sec-fetch-user: ?1
accept: */*

共有1个答案

马才
2023-03-14

这些是内部加特林日志。我们使用Netty的方式是将HTTP/1.1有效负载转换为HTTP/2有效负载。从您提供的日志来看,Gatling在这里正确地使用了HTTP/2。

 类似资料:
  • 问题内容: 我在这里尝试做的是获取给定URL的标头,以便确定MIME类型。我希望能够查看是否http://somedomain/foo/将返回例如HTML文档或JPEG图像。因此,我需要弄清楚如何发送HEAD请求,以便无需下载内容就可以读取MIME类型。有人知道这样做的简单方法吗? 问题答案: 使用。 还有一个getheader(name)获取特定的标头。

  • 问题内容: 我正在尝试使用node.js将http请求发送到neo4j数据库。这是我正在使用的代码: 我检查数据库是否正在运行(我已连接到管理网页,并且一切正常。)恐怕问题不在数据库方面,而在node.js方面。 我希望有人可以对此问题有所启发。我想学习如何在node.js中发送http请求,答案不必特定于neo4j问题。 提前致谢 问题答案: 如果是简单的GET请求,则应使用 否则,需要关闭。

  • 我有一个文件,其中包含Json请求体。我想使用constantUsersPerSec(...)对每秒发送恒定数量请求的Web进行基准测试。 但是,每次发送请求时,我都希望从请求列表中获取请求(随机或循环,我不在乎)。 我不知道该怎么对付加特林。使用以下代码,请求被随机选择一次,同一请求被反复发送。这不是我想要的 我的代码:

  • 问题内容: 我们正在使用AngularJS和Java Servlet开发RESTful Web服务。当用户登录时,我们的后端会向前端发送一个“ Set-Cookie”标头。在Angular中,我们通过(ngCookie-module)访问标头并进行设置。 现在,用户已登录,他可以例如删除一些东西。因此,前端将GET请求发送到后端。因为我们在不同的域上工作,所以我们需要设置一些CORS标头,并且An

  • 很多时候我们需要在页面打开的时候,读取远程的内容,然后在当前页面显示. 这就需要用到 http请求了. vue页面调用http请求 vuejs 内置了对发送http请求的支持. 只需要在对应页面的script 标签内加上对应的代码就好. 例如: 我们新增一个页面,叫 "博客列表页" : src/components/BlogList.vue, 内容如下: <template> <div >

  • 本文向大家介绍HTTP fetch发送2次请求的原因?相关面试题,主要包含被问及HTTP fetch发送2次请求的原因?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: fetch发送post请求的时候,总是发送2次,第一次状态码是204,第二次才成功? 原因很简单,因为你用fetch的post请求的时候,导致fetch 第一次发送了一个Options请求,询问服务器是否支持修改的请求头,如