Tomcat10.1.20 Http2协议无法获取ConnectionID与StreamID值咨询
问题解决:Tomcat 10.1.20 HTTP/2 connectionID和streamID属性为null
首先明确:HTTP/1.1协议本身不存在connectionID和streamID的概念,所以HTTP连接下这两个属性返回null是正常行为,无需处理。
针对HTTP/2连接下属性为null的问题,核心原因是Tomcat默认不开启HTTP/2请求属性的暴露,需手动配置开启:
解决步骤
- 修改
tomcat/server.xml中的Connector配置,给Http2Protocol添加enableRequestAttributes="true"参数:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" ...> <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" enableRequestAttributes="true" /> </Connector>
- 重启Tomcat服务。
验证结果
配置完成后,使用Firefox通过HTTPS连接时,调试代码应能输出非null的connectionID和streamID值:
getProtocol: HTTP/2.0 connectionID: [实际连接ID值] streamID: [实际流ID值] getScheme: https
关键说明
- Tomcat 10.1.x中,
Http2Protocol的enableRequestAttributes参数默认值为false,仅当设置为true时,才会将org.apache.coyote.connectionID和org.apache.coyote.streamID注入到请求属性中。 - 需匹配Tomcat版本对应的官方文档,避免版本差异导致配置失效。
内容的提问来源于stack exchange,提问作者Whome
相关产品推荐
相关产品推荐

