Golang:说明DumpRequest和DumpResponse HTTP / 2

时间:2020-10-18 17:04:54

标签: go http2 glide-golang

clientt := &http.Client{
    Timeout: 30 * time.Second,
}
var tr = &http2.Transport{}
clientt.Transport = tr

我创建一个客户端并发送http / 2请求。使用http2传输 但是在DumpRequest中,我看到了 GET / HTTP / 1.1 主持人:www.xxxxq23.com

在响应转储中,我看到了HTTP / 2.0

为什么请求使用HTTP / 1.1? 如何更改为HTTP / 2.0

1 个答案:

答案 0 :(得分:0)

HTTP / 2是二进制的,而不是文本的,以二进制形式转储将是不可读且无用的。这是故意设计的,很好documented

DumpRequest在其HTTP / 1.x连线中返回给定请求 表示。它只能由服务器用来调试客户端 要求。返回的表示形式只是一个近似值;一些 初始请求的详细信息在解析为 http.Request。特别是标题字段名称的顺序和大小写 迷路了。多值标头中的值顺序保持不变。 HTTP / 2请求以HTTP / 1.x格式而不是原始格式转储 二进制表示形式。

如果body为true,则DumpRequest也返回该body。为此,它 消耗req.Body,然后将其替换为新的io.ReadCloser 产生相同的字节。如果DumpRequest返回错误,则状态为 req是不确定的。

您可以签出实施详细信息here

相关问题