Accept-Encoding: gzip
означает только то, что клиент может и готов обрабатывать сжатый gzip-контент. Это не означает, что сервер должен фактически сжимать содержимое . Фактически, например, с изображениями не имеет смысла сжимать содержимое с помощью gzip, потому что это уже сжатые данные (но не с помощью gzip), а добавление gzip сверху может фактически увеличить размер полезной нагрузки.
Если вы хотите, чтобы ваш сервер возвращал сжатый контент, вам действительно нужно настроить сервер для этого. См., Например, здесь о том, как это сделать с помощью nginx.
Обратите внимание, что http.Response
прозрачно распакует ответ и обновит заголовок соответственно удалите Content-Encoding
. Это означает, что вы не получите исходный заголовок ответа при проверке с помощью resp.Header.Get("Content-Encoding")
. Если ответ был автоматически распакован, его можно увидеть в поле Uncompressed
:
fmt.Println("was compressed ", resp.Uncompressed)
Подробнее см. go doc http.Response
:
// Uncompressed reports whether the response was sent compressed but
// was decompressed by the http package. When true, reading from
// Body yields the uncompressed content instead of the compressed
// content actually set from the server, ContentLength is set to -1,
// and the "Content-Length" and "Content-Encoding" fields are deleted
// from the responseHeader. To get the original response from
// the server, set Transport.DisableCompression to true.
Uncompressed bool