From 87f40c65e4bba0e533672ea15dda6165c3e27f9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Farkas?= Date: Thu, 23 Oct 2025 17:14:50 +0200 Subject: [PATCH] datasources: forward the x-forwarded-for header (#112863) --- pkg/registry/apis/query/header_utils.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/registry/apis/query/header_utils.go b/pkg/registry/apis/query/header_utils.go index ffee41e371d..efbbbecd18d 100644 --- a/pkg/registry/apis/query/header_utils.go +++ b/pkg/registry/apis/query/header_utils.go @@ -19,6 +19,9 @@ import ( // // The usage of strings.ToLower is because the server would convert `FromAlert` to `Fromalert`. So the make matching // easier, we just match all headers in lower case. +// +// the headers X-Real-IP and X-Forwarded-For are used by the HostedGrafanaACHeaderMiddleware at +// https://github.com/grafana/grafana/blob/f191acf8114ab79609fc631e0f01fe2b47371188/pkg/services/pluginsintegration/clientmiddleware/grafana_request_id_header_middleware.go#L107 var expectedHeaders = map[string]string{ strings.ToLower(models.FromAlertHeaderName): models.FromAlertHeaderName, strings.ToLower(models.CacheSkipHeaderName): models.CacheSkipHeaderName, @@ -38,6 +41,7 @@ var expectedHeaders = map[string]string{ strings.ToLower(queryService.HeaderDashboardTitle): queryService.HeaderDashboardTitle, strings.ToLower(queryService.HeaderPanelTitle): queryService.HeaderPanelTitle, strings.ToLower("X-Real-IP"): "X-Real-IP", + strings.ToLower("X-Forwarded-For"): "X-Forwarded-For", } func ExtractKnownHeaders(header http.Header) map[string]string {