禁用从服务器接收的带有错误头的HTTP正文的解压缩

I have a simple, but infuriating issue: I'm trying to automatically download .tar.gz files from a web server, perform an MD5 checksum on them, and decompress them into a directory.

This is fairly easy to do, except for one problem: Some of the files have a Content-Encoding: x-gzip header set. This causes the "net/http" client to automatically decompress these files, making it impossible to verify their contents, and worse, making it difficult to unpack them (since you never quite know if you need to decompress them or not).

The server isn't mine, so I can't just fix the headers.

Is there any way to completely disable automatic decompression of response bodies with "net/http"? Failing that, is there anything else I can do to work around this issue?

Yes, you can do this with a custom HTTP transport:

tr := &http.Transport{
    DisableCompression: true,
}
client := &http.Client{Transport: tr}

This client will not decompress any of the responses, so you're free to handle that yourself