我正在嘗試使用Go閱讀gzip壓縮的HTTP響應!但我總是收到以下錯誤消息:panic: gzip: invalid header[...] stack trace [...]如果我運行“ curl -H” Accept-Encoding:gzip“ http://foo.com/ | gunzip-”,我得到的響應將正確壓縮。我也用ngrep仔細檢查過,正確發送/返回了對Accept-Encoding / Content-Encoding。如果我創建了一個包含一些虛擬內容的文件并將其gzip壓縮,則可以從Go中讀取它!程序。我用于測試的程序:package mainimport ( "io" //"os" "fmt" "compress/gzip" "net/http")func main() { /* This works fine f, _ := os.Open("/tmp/test.gz") defer f.Close() reader, err := gzip.NewReader(f) */ // This does not :/ resp, _ := http.Get("http://foo.com/") defer resp.Body.Close() reader, err := gzip.NewReader(resp.Body) if err != nil { panic(err) } buff := make([]byte, 1024) for { n, err := reader.Read(buff) if err != nil && err != io.EOF { panic(err) } if n == 0 { break } } s := fmt.Sprintf("%s", buff) fmt.Println(s)}我忽略了什么嗎?
3 回答

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
根據net / http docs(第110行)的說明,如果您手動設置Accept-Encoding請求標頭,則gzip壓縮的響應將不會被http.Transport自動解壓縮。否則,行為由Transport的DisableCompression布爾值控制
- 3 回答
- 0 關注
- 650 瀏覽
添加回答
舉報
0/150
提交
取消