这样客户端就可以在没有ALPN的情况下连接服务器,默认使用http/2。
这可能吗?</p>
是的,这是可能的,但条件很严格。
到目前为止,浏览器还没有为 HTTP/2 实现明文通信,所以如果您使用浏览器,您的问题的答案是否定的:如果您希望浏览器能够连接,您必须部署支持 ALPN 的服务器.
另一方面,其他客户端(例如 Java 客户端)可能能够使用明文 HTTP/2 连接到服务器,因此对于这些类型的客户端,您的问题的答案是肯定的:您可以部署 HTTP/2 服务器而不使用ALPN 支持。
Jetty 项目[disclaimer, I am a committer] 实现了支持这两种场景的Web 服务器和 servlet 容器:您可以启用 ALPN 进行 TLS (SSL) HTTP/2 通信,以便浏览器能够连接,您还可以启用此处解释的明文 HTTP/2 通信。另请参阅Jetty HTTP/2 文档。