From f7f8f3a1e2c09da4b88b78b7e04a9252187cf71f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20R=C3=BCger?= Date: Fri, 23 Aug 2024 15:04:34 +0200 Subject: [PATCH] fix: Unset Content-Encoding header when uncompressed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: #1595 Signed-off-by: Manuel RĂ¼ger --- prometheus/promhttp/http.go | 6 ++++-- prometheus/promhttp/http_test.go | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) 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) }