Golang:默认 HTTP 客户端不处理压缩
Golang: default HTTP client doesn't handle compression
我正在尝试执行 HTTP 请求并让 golang 添加 accept-encoding
header 并在响应被压缩时自动解压缩响应。我的印象是默认的 HTTP 客户端应该透明地处理它?但是它似乎没有:
req, _ := http.NewRequest("Get", "https://whosebug.com", nil)
// req.Header.Add("Accept-Encoding", "gzip")
client := &http.Client{}
resp, _ := client.Do(req)
println(resp.Header.Get("Content-Encoding"))
如果我手动添加 Accept-Encoding,它会发送 header,但我必须手动解压缩响应。
如果 Transport 自己请求 gzip 并获得 gzip 响应,则响应被透明地解压缩。在这种情况下,传输从响应中删除 Content-Encoding header。
检查 Response. Uncompressed 字段以确定响应是否未压缩。
req, _ := http.NewRequest("Get", "https://whosebug.com", nil)
resp, _ := http.DefaultClient.Do(req)
fmt.Println(resp.Uncompressed) // prints true
fmt.Println(resp.Header.Get("Content-Encoding")) // prints blank line
如果应用程序明确请求 gzip,则响应按原样返回。
req, _ := http.NewRequest("Get", "https://whosebug.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
我正在尝试执行 HTTP 请求并让 golang 添加 accept-encoding
header 并在响应被压缩时自动解压缩响应。我的印象是默认的 HTTP 客户端应该透明地处理它?但是它似乎没有:
req, _ := http.NewRequest("Get", "https://whosebug.com", nil)
// req.Header.Add("Accept-Encoding", "gzip")
client := &http.Client{}
resp, _ := client.Do(req)
println(resp.Header.Get("Content-Encoding"))
如果我手动添加 Accept-Encoding,它会发送 header,但我必须手动解压缩响应。
如果 Transport 自己请求 gzip 并获得 gzip 响应,则响应被透明地解压缩。在这种情况下,传输从响应中删除 Content-Encoding header。 检查 Response. Uncompressed 字段以确定响应是否未压缩。
req, _ := http.NewRequest("Get", "https://whosebug.com", nil)
resp, _ := http.DefaultClient.Do(req)
fmt.Println(resp.Uncompressed) // prints true
fmt.Println(resp.Header.Get("Content-Encoding")) // prints blank line
如果应用程序明确请求 gzip,则响应按原样返回。
req, _ := http.NewRequest("Get", "https://whosebug.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