From 6870b43dd1ed4b7f70e1eee82aab13a10ac3f478 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 7 Dec 2022 14:51:34 +0100 Subject: [PATCH] core-app-api: fix base url rewriting Signed-off-by: Patrik Oldsberg --- .changeset/green-deers-turn.md | 5 +++++ .../core-app-api/src/app/AppManager.test.tsx | 19 ++++++++----------- packages/core-app-api/src/app/AppManager.tsx | 16 +++++++++------- 3 files changed, 22 insertions(+), 18 deletions(-) create mode 100644 .changeset/green-deers-turn.md diff --git a/.changeset/green-deers-turn.md b/.changeset/green-deers-turn.md new file mode 100644 index 0000000000..394b89b8e3 --- /dev/null +++ b/.changeset/green-deers-turn.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-app-api': patch +--- + +Fix for the automatic rewriting of base URLs. diff --git a/packages/core-app-api/src/app/AppManager.test.tsx b/packages/core-app-api/src/app/AppManager.test.tsx index 03bd34eba1..1b2ac9471a 100644 --- a/packages/core-app-api/src/app/AppManager.test.tsx +++ b/packages/core-app-api/src/app/AppManager.test.tsx @@ -624,21 +624,18 @@ describe('Integration Test', () => { describe('relative url resolvers', () => { it.each([ [ - [document.location.href, document.location.href], + ['http://localhost', 'http://localhost'], { backend: { - baseUrl: 'http://localhost:8008/', + baseUrl: 'http://localhost:8008', }, app: { - baseUrl: 'http://localhost:8008/', + baseUrl: 'http://localhost:8008', }, }, ], [ - [ - `${document.location.origin}/backstage`, - `${document.location.origin}/backstage`, - ], + ['http://localhost/backstage', 'http://localhost/backstage'], { backend: { baseUrl: 'http://test.com/backstage', @@ -650,8 +647,8 @@ describe('Integration Test', () => { ], [ [ - `${document.location.origin}/backstage/instance`, - `${document.location.origin}/backstage/instance`, + 'http://localhost/backstage/instance', + 'http://localhost/backstage/instance', ], { backend: { @@ -664,8 +661,8 @@ describe('Integration Test', () => { ], [ [ - `${document.location.origin}/backstage/instance`, - `http://test.com/backstage/instance`, + 'http://localhost/backstage/instance', + 'http://test.com/backstage/instance', ], { backend: { diff --git a/packages/core-app-api/src/app/AppManager.tsx b/packages/core-app-api/src/app/AppManager.tsx index 155ff6ad3b..f4fa2d8442 100644 --- a/packages/core-app-api/src/app/AppManager.tsx +++ b/packages/core-app-api/src/app/AppManager.tsx @@ -179,7 +179,7 @@ function useConfigLoader( return new URL( fullUrl.replace(getOrigin(fullUrl), ''), document.location.origin, - ).href; + ).href.replace(/\/$/, ''); }; /** @@ -199,15 +199,17 @@ function useConfigLoader( const backendOrigin = getOrigin(backendBaseUrl); if (appOrigin === backendOrigin) { - relativeResolverConfig.data.backend = { - baseUrl: overrideOrigin(backendBaseUrl), - }; + const newBackendBaseUrl = overrideOrigin(backendBaseUrl); + if (backendBaseUrl !== newBackendBaseUrl) { + relativeResolverConfig.data.backend = { baseUrl: newBackendBaseUrl }; + } } } if (appBaseUrl) { - relativeResolverConfig.data.app = { - baseUrl: overrideOrigin(appBaseUrl), - }; + const newAppBaseUrl = overrideOrigin(appBaseUrl); + if (appBaseUrl !== newAppBaseUrl) { + relativeResolverConfig.data.app = { baseUrl: newAppBaseUrl }; + } } /** * Only add the relative config if there is actually data to add.