diff --git a/frontend/src/api/axios-init.js b/frontend/src/api/axios-init.js index 2ea235c5..3055e883 100644 --- a/frontend/src/api/axios-init.js +++ b/frontend/src/api/axios-init.js @@ -51,7 +51,12 @@ export function setupAxios() { axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - const basePath = window.X_UI_BASE_PATH; + // Read base path from window object or fallback to meta tag (for Cloudflare Rocket Loader compatibility) + let basePath = window.X_UI_BASE_PATH; + if (!basePath) { + const metaTag = document.querySelector('meta[name="base-path"]'); + basePath = metaTag ? metaTag.getAttribute('content') : null; + } if (typeof basePath === 'string' && basePath !== '' && basePath !== '/') { axios.defaults.baseURL = basePath; } diff --git a/web/controller/dist.go b/web/controller/dist.go index fd1b35a9..682f0024 100644 --- a/web/controller/dist.go +++ b/web/controller/dist.go @@ -56,6 +56,7 @@ func serveDistPage(c *gin.Context, name string) { csrfToken = "" } csrfMeta := []byte(``) + basePathMeta := []byte(``) nonceAttr := "" if nonce := c.GetString("csp_nonce"); nonce != "" { @@ -69,6 +70,7 @@ func serveDistPage(c *gin.Context, name string) { script += `;` inject := []byte(script) inject = append(inject, csrfMeta...) + inject = append(inject, basePathMeta...) inject = append(inject, []byte(``)...) out := bytes.Replace(body, []byte(""), inject, 1)