Skip to content

fix: Set Content-Type header for JSON responses in serializeHTTPHandler - #19878

Merged
slim-bean merged 1 commit into
mainfrom
fix-content-type
Nov 16, 2025
Merged

fix: Set Content-Type header for JSON responses in serializeHTTPHandler#19878
slim-bean merged 1 commit into
mainfrom
fix-content-type

Conversation

@slim-bean

Copy link
Copy Markdown
Collaborator

The serializeHTTPHandler was missing the Content-Type header for JSON responses, causing clients to receive "text/plain; charset=utf-8" instead of the expected "application/json; charset=UTF-8".

This bug was introduced in commit d0c11a6 (Dec 2024) when Parquet support was added. The Parquet code path correctly sets the Content-Type header, but the JSON code path (the default) was left without any Content-Type header.

The issue became visible in the last 4 weeks as the v2 engine router changes (commits 72cb649 and d721511) made more query_range requests flow through this code path.

This fix ensures JSON responses from /loki/api/v1/query_range and other query endpoints have the correct Content-Type header set, matching the behavior in other parts of the codebase (see codec.go lines 686, 1304).

Fixes: https://github.com/grafana/loki/issues/[issue-number] (cherry picked from commit f27ccf6)

What this PR does / why we need it:

Which issue(s) this PR fixes:
Fixes #

Special notes for your reviewer:

Checklist

  • Reviewed the CONTRIBUTING.md guide (required)
  • Documentation added
  • Tests updated
  • Title matches the required conventional commits format, see here
    • Note that Promtail is considered to be feature complete, and future development for logs collection will be in Grafana Alloy. As such, feat PRs are unlikely to be accepted unless a case can be made for the feature actually being a bug fix to existing behavior.
  • Changes that require user attention or interaction to upgrade are documented in docs/sources/setup/upgrade/_index.md
  • If the change is deprecating or removing a configuration option, update the deprecated-config.yaml and deleted-config.yaml files respectively in the tools/deprecated-config-checker directory. Example PR
The serializeHTTPHandler was missing the Content-Type header for JSON
responses, causing clients to receive "text/plain; charset=utf-8" instead
of the expected "application/json; charset=UTF-8".

This bug was introduced in commit d0c11a6 (Dec 2024) when Parquet support
was added. The Parquet code path correctly sets the Content-Type header, but
the JSON code path (the default) was left without any Content-Type header.

The issue became visible in the last 4 weeks as the v2 engine router changes
(commits 72cb649 and d721511) made more query_range requests flow through
this code path.

This fix ensures JSON responses from /loki/api/v1/query_range and other query
endpoints have the correct Content-Type header set, matching the behavior in
other parts of the codebase (see codec.go lines 686, 1304).

Fixes: https://github.com/grafana/loki/issues/[issue-number]
(cherry picked from commit f27ccf6)
@slim-bean
slim-bean merged commit 019d6b4 into main Nov 16, 2025
67 checks passed
@slim-bean
slim-bean deleted the fix-content-type branch November 16, 2025 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2 participants