首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么go http客户端在处理POST时放置transfer-encoding=chunked报头

为什么go http客户端在处理POST时放置transfer-encoding=chunked报头
EN

Stack Overflow用户
提问于 2017-08-28 18:44:32
回答 1查看 374关注 0票数 0

我像这样发出POST请求:

代码语言:javascript
复制
// ...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”标头。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-28 20:52:06

您正在向http请求传递一个bufio.Reader。由于您无法确定bufio.Reader的长度,因此http包将覆盖Content-Length以确保请求有效。

如果缓存了内容,并且知道其长度,则没有理由将其包装在bufio.Reader中,只需直接传递缓冲区即可。如果你还没有缓冲内容,允许它使用分块编码,这应该不会在请求中产生任何功能上的差异。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45917169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档