diff --git a/CHANGELOG.md b/CHANGELOG.md index 37749eb2f..f83a02761 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## Unreleased +## 1.20.2 / 2024-08-23 + +* [BUGFIX] promhttp: Unset Content-Encoding header when data is uncompressed. #1596 + ## 1.20.1 / 2024-08-20 * [BUGFIX] process-collector: Fixed unregistered descriptor error when using process collector with `PedanticRegistry` on linux machines. #1587 diff --git a/VERSION b/VERSION index 0044d6cb9..769e37e15 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.20.1 +1.20.2 diff --git a/prometheus/promhttp/http.go b/prometheus/promhttp/http.go index 2e0b9a864..e598e66e6 100644 --- a/prometheus/promhttp/http.go +++ b/prometheus/promhttp/http.go @@ -203,8 +203,10 @@ func HandlerForTransactional(reg prometheus.TransactionalGatherer, opts HandlerO defer closeWriter() - rsp.Header().Set(contentEncodingHeader, encodingHeader) - + // Set Content-Encoding only when data is compressed + if encodingHeader != string(Identity) { + rsp.Header().Set(contentEncodingHeader, encodingHeader) + } enc := expfmt.NewEncoder(w, contentType) // handleError handles the error according to opts.ErrorHandling diff --git a/prometheus/promhttp/http_test.go b/prometheus/promhttp/http_test.go index 0ed8fe341..3ad2d1da8 100644 --- a/prometheus/promhttp/http_test.go +++ b/prometheus/promhttp/http_test.go @@ -267,7 +267,7 @@ func TestInstrumentMetricHandler(t *testing.T) { t.Errorf("got HTTP status code %d, want %d", got, want) } - if got, want := writer.Header().Get(contentEncodingHeader), string(Identity); got != want { + if got, want := writer.Header().Get(contentEncodingHeader), ""; got != want { t.Errorf("got HTTP content encoding header %s, want %s", got, want) }