【问题标题】:Tomcat 9.0.16 Java 11 HTTP/2Tomcat 9.0.16 Java 11 HTTP/2
【发布时间】:2019-08-02 11:23:32
【问题描述】:

TLS 仍然是在最新的 Java 和 Tomcat 上使用 HTTP/2 的先决条件吗?我可以将<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/> 添加到 HTTP 端口 8080 并期望 HTTP/2 工作吗?如何实际测试/查看实际使用的是 HTTP/2 而不是 HTTP?任何命令行/浏览器工具?谢谢。

【问题讨论】:

    标签: java tomcat configuration tls1.2 http2


    【解决方案1】:

    正如HTTP Connector howto 所说:

    HTTP/2 支持 TLS (h2),非 TLS 通过 HTTP 升级 (h2c) 和直接 HTTP/2 (h2c) 连接。启用 HTTP/2 支持 对于 HTTP 连接器,以下 UpgradeProtocol 元素必须是 嵌套在 Connector 中,className 属性为 org.apache.coyote.http2.Http2Protocol.

    这表明 TLS 不是必需的。问题仍然是您的浏览器是否支持h2c升级。

    使用 Firefox,按 (F12) 打开开发者工具,导航到 Networkanalysis。在那里,您会看到一个表格,其中显示了每个请求的多个属性。 如果不存在,请添加 Protocol 列,该列告诉您每个请求是否使用 HTTP/1、h2c 或任何其他协议。 Chrome 也以类似的方式提供协议信息:

    只需右键单击开发人员工具 Netowrk 部分中的列,即可概览所有可用列:

    另一个替代客户端使用的调试协议是访问日志记录。只需在 \apache-tomcat\webapps\ROOT\META-INF\ 的默认 ROOT webapp 中创建一个 context.xhtml 并使用以下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
      <Valve className="org.apache.catalina.valves.AccessLogValve"/>
    </Context>
    

    重新启动 Tomcat 并执行一些请求后,您会发现 \apache-tomcat\logs\localhost_access_log.2019-03-12.txt 准确地说明了用于每个请求的协议:

    ... - - [12/Mar/2019...] "GET / HTTP/1.1" 200 11488
    ... - - [12/Mar/2019...] "GET / HTTP/1.1" 200 11488
    ... - - [12/Mar/2019...] "GET / HTTP/2.0" 200 11468
    

    就我而言,第一个请求都是使用 Chrome 和 Firefox 完成的,第三个请求是使用您在其他答案中写的命令 curl -v --http2 localhost:8080 完成的。

    【讨论】:

    • 很遗憾chrome调试工具的Network选项卡中没有“Protocol”信息。
    • @KokHowTeh 您是否尝试添加它?请参阅我的编辑中的提示 + 图。
    • 是的,我现在看到了。但是,由于我没有使用 TLS 配置 HTTP/2,我只在协议窗口中看到与 h2c 相对的“h2”,然后是 http/2+quic/43 ...我在这部分迷失了我想我应该期待看到 h2c。我错过了什么?
    • @KokHowTeh 刚刚添加了第三个协议调试替代方案。
    • 只是为了澄清。当服务器重定向到 https 并从谷歌网站提供服务时,我看到 h2 和 http/2+quic/43。其他人仍然使用 http/1.1 这与 Chrome 仅支持带有 TLS 的 HTTP/2 的事实是一致的。
    【解决方案2】:

    您可以使用curl -v --http2 localhost:8080 来检查应用UpgradeProtocol 并重新启动Tomcat 服务器后的操作。

    【讨论】:

      猜你喜欢
      • 2019-08-04
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 2019-07-08
      • 2021-09-13
      • 2020-01-06
      • 2020-11-19
      • 2015-06-04
      相关资源
      最近更新 更多