2 回答
![?](http://img1.sycdn.imooc.com/545868cd00013bbb02200220-100-100.jpg)
TA贡献1942条经验 获得超3个赞
由于以下代码,您为客户端编写的代码只是直接发送 tar 文件:
reader, err := gzip.NewReader(f)
...
request, err := http.NewRequest("POST", "http://localhost:8080/results", reader)
如果您.tar.gz直接发送文件内容,则需要在服务器上对其进行压缩。例如:
request, err := http.NewRequest(..., f)
我认为这更接近您应该期望第三方客户表现出的行为。
![?](http://img1.sycdn.imooc.com/533e4d470001a00a02000200-100-100.jpg)
TA贡献1842条经验 获得超21个赞
显然不是,但也许...
Golang 为 http 客户端(和服务器)提供了非常好的支持。这是最早支持 http2 的语言之一,API 的设计清楚地表明了他们对快速 http 的关注。
这就是他们Accept-Econding: gzip
自动添加的原因。这将大大减少服务器响应的大小,然后优化传输。
但是 gzip 仍然是 http 1 中的一个选项,并非所有客户端都会将此标头推送到您的服务器。
请注意,Content-Type
描述了您发送的数据类型(这里是 tar.gz,但可能是application/json
, test/javascript
, ...),当Accept-Encoding
描述数据为传输编码的方式时
Go 将负责透明地Accept-Encoding
为您处理数据,因为它负责数据的传输。然后由你来处理,Content-Type
因为只有你知道如何给你收到的内容赋予意义
- 2 回答
- 0 关注
- 148 浏览
添加回答
举报