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
答案 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