HTTP2 默认为 HTTP/1.1
Posted
技术标签:
【中文标题】HTTP2 默认为 HTTP/1.1【英文标题】:HTTP2 defaulting to HTTP/1.1 【发布时间】:2019-06-03 06:35:57 【问题描述】:我正在尝试设置一个 apache 负载平衡器来处理 HTTP2
连接,但是传入的连接默认为 HTTP/1.1
奇怪的是,只有当HTTP2
连接来自netty HTTP2
库时才会发生这种情况,当请求来自OKHTTP
库时,它会正常运行。
我正在使用的 SSLCipherSuite
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-
SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-
SHA256:ECDHE-RSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-
SHA256:AES128-SHA256:AES256-SHA:AES128-SHA
用netty看到的错误是
io.netty.handler.codec.http2.Http2Exception:第一个接收到的帧不是设置。前 5 个字节的十六进制转储:485454502f 在 io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:85) 在 io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.verifyFirstFrameIsSettings(Http2ConnectionHandler.java:350)
【问题讨论】:
这可能是因为服务器使用的是 SSL 而 netty 不是(反之亦然)。服务器是否使用 SSL? 是的,两者都超过了 ssl,我的另一个问题是我正在使用自签名证书。不确定 netty codec_http2 库是否接受自签名证书 你好,有解决办法吗,我也遇到类似的问题 github.com/netty/netty/issues/8717 解决方案是上面的链接,它是一个 apache 配置信息。 【参考方案1】:github.com/netty/netty/issues/8717 解决方案是上面的链接,它是一个 apache 配置信息。 H2Direct on
【讨论】:
以上是关于HTTP2 默认为 HTTP/1.1的主要内容,如果未能解决你的问题,请参考以下文章
HTTP的长链接和短链接以及HTTP1.0HTTP1.1HTTP2.0
HTTP2.0 相比 HTTP1.0HTTP1.1 有哪些重大改进?值得升级更换吗?