【问题标题】:Can I implements http/2 server without ALPN support?我可以在没有 ALPN 支持的情况下实现 http/2 服务器吗?
【发布时间】:2015-11-14 21:51:49
【问题描述】:

这样客户端可以不用ALPN连接服务器,默认使用http/2。

这可能吗?

【问题讨论】:

    标签: http2 alpn


    【解决方案1】:

    是的,有可能,但条件很严格。

    到目前为止,浏览器还没有为 HTTP/2 实现明文通信,因此如果您使用浏览器,您的问题的答案是否定的:如果您希望浏览器成为支持 ALPN 的服务器,则必须部署您的服务器可以连接。

    另一方面,其他客户端(例如 Java 客户端)可能能够使用明文 HTTP/2 连接到服务器,因此对于这些类型的客户端,您的问题的答案是肯定的:您可以部署 HTTP/ 2 台不支持 ALPN 的服务器。

    Jetty Project [免责声明,我是提交者] 实现了支持这两种方案的 Web 服务器和 servlet 容器:您可以为 TLS (SSL) HTTP/2 通信启用 ALPN,以便浏览器能够连接,并且您还可以使用explained here 启用明文 HTTP/2 通信。另请参阅Jetty HTTP/2 documentation

    【讨论】:

    • 不完全是问的,但很多服务器也接受 NPN 而不是 ALPN...=)
    • @sbordet,是否可以直接通过 TLS 连接运行带有 http/2 的服务器?这样客户端可以在没有 ALPN 的情况下连接到服务器并使用 http/2 默认值?
    • 这只有在客户端事先知道服务器在您连接的端口上接受 HTTP/2 over TLS 时才有可能。服务器可以发送“Alt-Svc”标头来告诉客户端它们支持什么端口/协议,并且实现 Alt-Svc 的客户端将能够使用 HTTP/2 over TLS 进行连接,而无需 ALPN。
    • @sbordet 因此,如果我的服务器将发送 Alt-Svc 标头,Chrome 客户端是否能够在没有 ALPN 的情况下通过 TLS 使用 HTTP/2?其他浏览器也会这样做吗?
    猜你喜欢
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    相关资源
    最近更新 更多