From 37e56978b1d2bde0415888a6f9ae7e1fecf8dec2 Mon Sep 17 00:00:00 2001 From: zyh Date: Thu, 28 Aug 2025 22:20:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=8C=E7=BB=B4=E7=A0=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?URL=E9=AA=8C=E8=AF=81=E5=92=8C=E9=87=8D=E8=AF=95=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=EF=BC=8C=E6=8F=90=E5=8D=87=E7=94=A8=E6=88=B7=E4=BD=93?= =?UTF-8?q?=E9=AA=8C=EF=BC=9B=E6=9B=B4=E6=96=B0Play.vue=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E9=87=8D=E8=AF=95=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=92=8C=E5=8C=BA=E5=9F=9F=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/http.js | 21 ++++- src/views/Play.vue | 198 ++++++++++++++++++++++++++++++++++---------- 2 files changed, 172 insertions(+), 47 deletions(-) diff --git a/src/plugins/http.js b/src/plugins/http.js index 523fc11..c90db20 100644 --- a/src/plugins/http.js +++ b/src/plugins/http.js @@ -38,9 +38,13 @@ http.interceptors.request.use( '/api/link/status', '/api/link/select-region', '/api/link/poll-login', - '/api/link/progress' + '/api/link/progress', + '/api/link/refresh', + '/api/link/qr.png' ] - const isPublicAPI = publicAPIs.some(api => config.url?.includes(api)) + // 游戏界面接口使用动态路径,需要特殊处理 + const isGameInterfaceAPI = /\/api\/link\/[^\/]+\/game-interface/.test(config.url || '') + const isPublicAPI = publicAPIs.some(api => config.url?.includes(api)) || isGameInterfaceAPI if (!isPublicAPI) { const token = getAccessToken() @@ -81,11 +85,20 @@ http.interceptors.response.use( '/api/link/status', '/api/link/select-region', '/api/link/poll-login', - '/api/link/progress' + '/api/link/progress', + '/api/link/refresh', + '/api/link/qr.png' ] - const isPublicAPI = publicAPIs.some(api => url?.includes(api)) + // 游戏界面接口使用动态路径,需要特殊处理 + const isGameInterfaceAPI = /\/api\/link\/[^\/]+\/game-interface/.test(url || '') + const isPublicAPI = publicAPIs.some(api => url?.includes(api)) || isGameInterfaceAPI if (status === 401 && !isAuthPath && !isPublicAPI) { + // 阻止浏览器显示基本认证弹窗 + if (error.response && error.response.headers) { + delete error.response.headers['www-authenticate'] + } + if (!isRefreshing) { isRefreshing = true try { diff --git a/src/views/Play.vue b/src/views/Play.vue index 6157b1d..582415f 100644 --- a/src/views/Play.vue +++ b/src/views/Play.vue @@ -51,6 +51,7 @@

正在准备二维码...

预计等待 {{ state.qrDelaySeconds }} 秒

+

重试中... ({{ state.qrRetryCount }}/{{ state.maxQrRetries }})

@@ -172,7 +173,7 @@