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 @@