eee*_*eee 0 compression http go
我正在尝试执行 HTTP 请求,并让 golang 添加accept-encoding标头,并在响应被压缩时自动解压缩响应。我的印象是默认的 HTTP 客户端应该透明地处理它?但它似乎并没有:
req, _ := http.NewRequest("Get", "https://stackoverflow.com", nil)
// req.Header.Add("Accept-Encoding", "gzip")
client := &http.Client{}
resp, _ := client.Do(req)
println(resp.Header.Get("Content-Encoding"))
Run Code Online (Sandbox Code Playgroud)
如果我手动添加接受编码,它会发送标头,但我必须手动解压缩响应。
如果 Transport 自行请求 gzip 并获得 gzip 响应,则该响应将被透明解压缩。在这种情况下,传输会从响应中删除 Content-Encoding 标头。检查响应。未压缩字段以确定响应是否未压缩。
req, _ := http.NewRequest("Get", "https://stackoverflow.com", nil)
resp, _ := http.DefaultClient.Do(req)
fmt.Println(resp.Uncompressed) // prints true
fmt.Println(resp.Header.Get("Content-Encoding")) // prints blank line
Run Code Online (Sandbox Code Playgroud)
如果应用程序显式请求 gzip,则响应将按原样返回。
req, _ := http.NewRequest("Get", "https://stackoverflow.com", nil)
req.Header.Add("Accept-Encoding", "gzip")
client := &http.Client{}
resp, _ := client.Do(req)
fmt.Println(resp.Uncompressed) // prints false
fmt.Println(resp.Header.Get("Content-Encoding")) prints gzip
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2736 次 |
| 最近记录: |