go x/net/http2: 连接到HTTP 1.x服务器时,错误信息不明确,

fzsnzjdm  于 4个月前  发布在  Go
关注(0)|答案(3)|浏览(42)

你正在使用的Go版本是什么(go version)?
1.13

这个问题在最新版本的发布中是否会重现?
是的

你正在使用什么操作系统和处理器架构(go env)?
GOARCH="amd64"

你做了什么?
我使用一个http2客户端尝试连接一个http客户端。我希望看到一个协议错误或者一些可以告诉我目标不是一个有效的http2服务的东西。

你看到了什么?
我得到了一个“意外的EOF”错误。我认为我们可以让这个错误更清晰。根据rfc,[https://httpwg.org/specs/rfc7540.html#rfc.section.3.5]的最后一个段落中,客户端和服务器必须将无效的连接前缀视为类型为PROTOCOL_ERROR的连接错误(第5.4.1节)。似乎我们应该返回PROTOCOL_ERROR。

mnowg1ta

mnowg1ta1#

/cc @bradfitz@tombergan who own net/http2

rt4zxlrg

rt4zxlrg2#

是的,我之前看到了相关的CL(没有上下文),并要求提交这个bug。
这不会影响正常的net/http或x/net/http2用户。这会影响直接使用低级http2.Framer的人,编写自己的HTTP/2客户端。

oxf4rvwz

oxf4rvwz3#

基于HTTP/2的客户端可能会 Package 错误并向用户返回"http2:unexpected EOF"。用户无法知道原因。如果客户端设置了maxReadSize,用户可能会收到"http2: frame too large"错误。这两种错误都不能告诉用户真正的原因。

如果我们首先检查帧类型,我们可以返回确切的错误,而无需读取最后一个内容。

相关问题