我可以使用 curl 查看 HTTP/2 标头。但是,如果此协议适用于帧和二进制数:这些标头不应该是“不可见的”吗?

我可以使用 curl 查看 HTTP/2 标头。但是,如果此协议适用于帧和二进制数:这些标头不应该是“不可见的”吗?

HTTP/2 与 HTTP/1.1 相比有几个不同之处。其中之一是使用帧、二进制数和压缩来优化标头。但是,当我对支持 HTTP/2 的域使用“curl -v --http2”时,我可以看到响应标头,如“Server”或“Cache-control”。即使我对支持 HTTP/2 的域使用“curl -v --http2-prior-knowledge”选项,我也可以看到“TLS Handshake”和 HTTP 标头,如“date”、“server”、“cache-control”、“pragma”等。我的问题是:如果 HTTP/2 使用帧、二进制和压缩,为什么我可以看到标头?它们不应该是“不可见的”吗?

答案1

curl 是一个成熟的 http/2 客户端(当您使用正确的开关时),当您执行数据包捕获时,单个网络数据包只包含二进制数据而不是 ASCII 标头。

由于向操作员返回二进制数据大多毫无意义,因此 curl 将解码底层网络协议的 TLS 和二进制组件,并尝试将人类可读的标头发送到控制台

相关内容