gpt4 book ai didi

java - Tomcat 9.0.16 Java 11 HTTP/2

转载 作者:行者123 更新时间:2023-11-28 22:10:22 26 4
gpt4 key购买 nike

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

最佳答案

作为HTTP Connector howto状态:

HTTP/2 is support is provided for TLS (h2), non-TLS via HTTP upgrade (h2c) and direct HTTP/2 (h2c) connections. To enable HTTP/2 support for an HTTP connector the following UpgradeProtocol element must be nested within the Connector with a className attribute of org.apache.coyote.http2.Http2Protocol.

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

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

只需右键单击开发人员工具 Netowrk 部分中的一个列,您就可以获得所有可用列的概览:

enter image description here

客户端使用的调试协议(protocol)的另一种替代方法访问日志记录。只需在 \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,它准确说明了每个请求使用的协议(protocol):

... - - [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 完成的。

关于java - Tomcat 9.0.16 Java 11 HTTP/2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55113844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com