From 7888f19443b6c3c6cc0dd5c5ff16b9f78694b9fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Fern=C3=A1ndez?= Date: Mon, 17 Nov 2025 16:29:32 +0100 Subject: [PATCH] FS: custom domain error message (#113779) --- pkg/services/frontend/index.html | 39 +++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/pkg/services/frontend/index.html b/pkg/services/frontend/index.html index 688222f6577..2a8cebebef6 100644 --- a/pkg/services/frontend/index.html +++ b/pkg/services/frontend/index.html @@ -81,7 +81,7 @@ "Segoe UI Symbol"; } - .fs-variant-loader, .fs-variant-error { + .fs-variant-loader, .fs-variant-error, .fs-custom-domain-error { display: contents; } @@ -118,6 +118,10 @@ opacity: 1; } + .fs-custom-domain-error .fs-loader-text { + opacity: 1; + } + .fs-error-icon { fill: var(--fs-color-error); } @@ -151,6 +155,20 @@

Error loading Grafana

+
+ + + + +

Error loading Grafana

+

Please, use your URL custom domain directly

+
@@ -185,6 +203,14 @@ console.error('Failed to report boot error to backend: ', err); }); }; + // Needed to stop retrying boot data when custom domain error occurs + // TODO remove when https://github.com/grafana/grafana/pull/113717 is released in backend + const CUSTOM_DOMAIN_ERROR = "Custom domain error"; + window.__grafana_custom_domain_failed = function(err) { + console.error('Failed to load Grafana due to custom domain issue', err); + document.querySelector('.fs-variant-loader').classList.add('fs-hidden'); + document.querySelector('.fs-custom-domain-error').classList.remove('fs-hidden'); + } window.onload = function() { if (window.__grafana_app_bundle_loaded) { @@ -219,8 +245,12 @@ bootDataUrl.searchParams.append(key, value); } - const resp = await fetch(bootDataUrl); - + const resp = await fetch(bootDataUrl, {redirect: 'manual'}); + // TODO remove when https://github.com/grafana/grafana/pull/113717 is released in backend + if (resp.type === 'opaqueredirect') { + window.__grafana_custom_domain_failed(); + return CUSTOM_DOMAIN_ERROR; + } // manual redirect for custom domains // see pkg/middleware/validate_host.go if (resp.status === 204) { @@ -265,6 +295,9 @@ setLoading(); setTimeout(attemptFetch, CHECK_INTERVAL); return; + // TODO remove when https://github.com/grafana/grafana/pull/113717 is released in backend + } else if (bootData === CUSTOM_DOMAIN_ERROR) { + return; } resolve(bootData);