From 27ce76bdfd687018a2819d8d331f989495b9d6ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E7=94=B7?= Date: Tue, 28 Apr 2026 00:38:09 +0800 Subject: [PATCH] =?UTF-8?q?fix(request):=20clazz=20API=20=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=20KC=5FSERVER/UC=5FSERVER=20=E7=BB=9D=E5=AF=B9=20URL?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E7=9B=B8=E5=AF=B9=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E8=90=BD=E5=88=B0=E9=94=99=E8=AF=AF=20vhost=20=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=20HTML?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- src/utils/request.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/utils/request.ts b/src/utils/request.ts index 6db0923..8df1138 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -69,8 +69,12 @@ axiosInstance.interceptors.request.use((options) => { // @ts-ignore url = import.meta.env.DEV ? cozePath : (AI_SERVER + cozePath); } else if (url?.startsWith('/api/v1/clazz')) { - // @ts-ignore - url = KC_SERVER + url; + // 必须用绝对 URL:否则在 wx/static 等域打开 H5 时 axios 会把 /api/v1/clazz 发到当前域名,落到 SPA index.html(字符串),触发排课 normalize 报错 + // @ts-ignore vite define + const kcBase = KC_SERVER || UC_SERVER; + if (kcBase) { + url = new URL(url, kcBase.endsWith('/') ? kcBase : `${kcBase}/`).href; + } } return {...rest, url, headers: headersObj}; @@ -148,6 +152,15 @@ export default function request({url = '', method = 'get', data, params, ...rest resolved.e = getHtyErrUserMessage(res.hty_err, resolved.e ?? baseErrText); } + // 网关未配置 /api/v1/clazz/ 时 SPA 返回 HTML,axios 会得到 string,原先会当作 d 传入业务层触发「排课数据格式异常」 + const rawBody = resolved.d; + if (typeof rawBody === 'string' && /^\s*