我像这样发出POST请求:
// ...pack non-zero buf
req, _ := http.NewRequest("POST", url, bufio.NewReader(buf))
req.Header.Add("X-Uid", "12345")
req.Header.Add("Content-Length", strconv.Itoa(buf.Len()))
client := http.Client{}
resp, err := client.Do(req)我希望不会传递"Transfer-Encoding“标头,但我在服务器日志中看到传递了"Transfer-Encoding: chunked”标头。
发布于 2017-08-28 20:52:06
您正在向http请求传递一个bufio.Reader。由于您无法确定bufio.Reader的长度,因此http包将覆盖Content-Length以确保请求有效。
如果缓存了内容,并且知道其长度,则没有理由将其包装在bufio.Reader中,只需直接传递缓冲区即可。如果你还没有缓冲内容,允许它使用分块编码,这应该不会在请求中产生任何功能上的差异。
https://stackoverflow.com/questions/45917169
复制相似问题