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 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
HTTP/2 是二进制的,而不是文本的,并且以二进制形式转储将是不可读且无用的。这是有意设计的,并且有据可查:
DumpRequest 在其 HTTP/1.x 线路表示中返回给定的请求。它只能由服务器用于调试客户端请求。返回的表示只是一个近似值;初始请求的一些细节在解析为 http.Request 时会丢失。特别是,标头字段名称的顺序和大小写丢失。多值标头中的值顺序保持不变。HTTP/2 请求以 HTTP/1.x 形式转储,而不是其原始二进制表示形式。
如果 body 为 true,则 DumpRequest 也会返回正文。为此,它消耗 req.Body,然后用产生相同字节的新 io.ReadCloser 替换它。如果 DumpRequest 返回错误,则 req 的状态未定义。
您可以在此处查看实施详细信息
- 1 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消