如何确定 Spring WebClient 是否使用 HTTP/2?

pix*_*xel 7 http2 spring-webflux spring-webclient spring5

我想知道 Spring WebClient 是否使用 HTTP/2。我怎么能确定呢?

Jon*_*nas 6

服务器对 HTTP/2 的支持

从 Spring Framework 5.1 (Reactor Netty 0.8) 开始,该服务器也支持 HTTP/2。JDK9+ 部署将支持该协议,而无需更改特定的基础设施。

Reactor 是 Spring WebClient 使用的底层 http 客户端。从 Spring Framework 5.1 开始,它支持 HTTP/2。

另请参阅Spring 框架:HTTP/2 支持以获得概述。

HTTP/2 按连接进行协商

您的请求连接是使用 HTTP/2 还是 HTTP/1.1 是根据客户端和服务器之间使用ALPN 的连接进行协商的。服务器显示它支持的 http 版本,然后客户端选择 HTTP/2(如果两个部分都支持)。这是通过握手中的 TLS 完成的,因此在不终止 TLS 连接的情况下无法检测到它。


Akh*_*dla 5

Spring WebClient默认使用ReactorClientHttpConnector(一个 Reactor-Netty 实现ClientHttpConnector)。根据这个维基 Netty http-client 已经支持 HTTP/2。

如果您想检查您的 Spring WebClient 是否使用 HTTP/2,您可以使用Wireshark 之类的工具来拦截您的请求并分析它使用的协议。