From fb6f05c2676cbf19a7a9a09a3d971b0aef453fb3 Mon Sep 17 00:00:00 2001 From: Joel Date: Tue, 21 Oct 2025 13:25:20 +0800 Subject: [PATCH] fix: infinite jump to login url (#27178) --- web/service/base.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/web/service/base.ts b/web/service/base.ts index 9f2b885cb4..fc9a649eec 100644 --- a/web/service/base.ts +++ b/web/service/base.ts @@ -114,6 +114,15 @@ export type IOtherOptions = { onDataSourceNodeError?: IOnDataSourceNodeError } +function jumpTo(url: string) { + if(!url) + return + const targetPath = new URL(url, globalThis.location.origin).pathname + if(targetPath === globalThis.location.pathname) + return + globalThis.location.href = url +} + function unicodeToChar(text: string) { if (!text) return '' @@ -576,11 +585,11 @@ export const request = async(url: string, options = {}, otherOptions?: IOther return Promise.reject(err) } if (code === 'not_init_validated' && IS_CE_EDITION) { - globalThis.location.href = `${globalThis.location.origin}${basePath}/init` + jumpTo(`${globalThis.location.origin}${basePath}/init`) return Promise.reject(err) } if (code === 'not_setup' && IS_CE_EDITION) { - globalThis.location.href = `${globalThis.location.origin}${basePath}/install` + jumpTo(`${globalThis.location.origin}${basePath}/install`) return Promise.reject(err) } @@ -589,15 +598,14 @@ export const request = async(url: string, options = {}, otherOptions?: IOther if (refreshErr === null) return baseFetch(url, options, otherOptionsForBaseFetch) if (location.pathname !== `${basePath}/signin` || !IS_CE_EDITION) { - globalThis.location.href = loginUrl + jumpTo(loginUrl) return Promise.reject(err) } if (!silent) { Toast.notify({ type: 'error', message }) return Promise.reject(err) } - if (globalThis.location.href !== loginUrl) - globalThis.location.href = loginUrl + jumpTo(loginUrl) return Promise.reject(err) } else {