你正在使用的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。
3条答案
按热度按时间mnowg1ta1#
/cc @bradfitz@tombergan who own net/http2
rt4zxlrg2#
是的,我之前看到了相关的CL(没有上下文),并要求提交这个bug。
这不会影响正常的net/http或x/net/http2用户。这会影响直接使用低级http2.Framer的人,编写自己的HTTP/2客户端。
oxf4rvwz3#
基于HTTP/2的客户端可能会 Package 错误并向用户返回"http2:unexpected EOF"。用户无法知道原因。如果客户端设置了
maxReadSize
,用户可能会收到"http2: frame too large"错误。这两种错误都不能告诉用户真正的原因。如果我们首先检查帧类型,我们可以返回确切的错误,而无需读取最后一个内容。