【问题标题】:Communication is happening on http/1.1 even though HTTP2 is enabled. How to enforce communication should happen on only HTTP/2?即使启用了 HTTP2,也会在 http/1.1 上进行通信。如何强制通信只发生在 HTTP/2 上?
【发布时间】:2021-12-07 00:16:25
【问题描述】:

[![在此处输入图片描述][1]][1]

下图有命令 [1]:https://i.stack.imgur.com/aTH9u.png

【问题讨论】:

  • 最好将命令作为文本而不是图像附件。

标签: http2


【解决方案1】:

HTTP/2 通过以下三种方式之一进行协商:

  1. 在使用 HTTPS 时作为 HTTPS 设置的一部分 - 这是推荐的方法
  2. 作为通过 HTTP/1.1 建立初始连接后使用 HTTP 的升级。请注意,这很少使用,因此将在下一版本的 HTTP/2 规范中弃用。
  3. 通过在 HTTP 上直接使用 HTTP/2 连接,如果您确定它支持 HTTP/2,请告诉您客户端。

您使用的是 HTTP 而不是 HTTPS,因此第一个选项对您不可用。

所以它使用了第二个选项。它确实使用了 HTTP/2 - 您可以在请求的后半部分看到这一点。但请参阅我关于弃用的说明。

如果你想直接使用 HTTP/2 进行 curl,你可以使用 --http2-prior-knowledge 命令行选项。

【讨论】:

  • 谢谢“巴里·波拉德”。我担心的是在 HTTP/1.1 而不是 HTTP2 上通信的 apache 流量。我想禁用 HTTP/1.1,以便默认情况下应该在 HTTP2 上进行通信。我怎样才能做到这一点?
  • 看来你不想支持第二个选项。因此,您需要支持 HTTPS,或者更改正在连接的任何客户端以假设它是 HTTP/2 服务器(假设您可以控制它们,并且可以在那里进行配置)。您为什么要出于兴趣放弃 HTTP/1.1?
猜你喜欢
  • 2016-12-04
  • 1970-01-01
  • 2015-03-05
  • 2016-07-29
  • 1970-01-01
  • 2023-02-25
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多