有没有一种方法可以让仅 HTTP/1.1 的客户端在不更新客户端的情况下与看似默认为 HTTP/2 的服务器通信?

Is there a way for an HTTP/1.1 only client to communicate with a server that seemingly defaults to HTTP/2 WITHOUT updating the client?

我正在尝试使用 Apach Http-Components 3.4 连接到默认为 HTTP/2 的服务器,该服务器与 HTTP/2 不兼容。我看到 here 客户端可以通过 Upgrade header 从服务器请求 HTTP/2。有没有办法从服务器请求 HTTP/1.1?

是的,应该是默认的。如果先前已协商,服务器应该只 HTTP/2 到客户端。

任一:

  • 通过从 HTTP/1 升级到 HTTP Upgrade header
  • 在 TLS 握手期间通过协议协商 (ALPN)

理论上可以在双方不协商的情况下强制HTTP/2。这称为 HTTP/2 和 prior-knowledge。但是,不应在 public 服务器上使用该模式,因为它确实会导致您遇到的问题。

我会尝试与服务器的 developers/maintainers 对话,如果只需要 HTTP/2 行为。