From 21174dc5cbc96a02a1ee525296f6804b1007939b Mon Sep 17 00:00:00 2001 From: freefire Date: Sat, 26 Sep 2026 04:55:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=BB=E5=8A=A8=E7=99=BB=E5=87=BA?= =?UTF-8?q?=E5=90=8E=E8=AF=AF=E5=BC=B9=E3=80=8C=E7=99=BB=E5=BD=95=E5=B7=B2?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E3=80=8D=E4=B8=8E=E6=B8=B8=E5=AE=A2=E5=9F=8B?= =?UTF-8?q?=E7=82=B9=20403?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - apiLogout 成功后复位 sessionSeen:主动登出不再被后续 401 误判为「被顶下线」,消除登出后登录页误弹 AccountGuard 弹窗,及其引发的二次 logout 清掉刚补发 CSRF cookie、首次登录报「CSRF token 缺失」的问题 - apiTelemetryPageView 无 CSRF cookie 时跳过上报:游客首屏(cookie 尚未由 GET 补发)不再产生必然失败的 403,cookie 补发后照常上报 --- frontend/lib/api.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/frontend/lib/api.ts b/frontend/lib/api.ts index a0f5da7..e6a23e7 100644 --- a/frontend/lib/api.ts +++ b/frontend/lib/api.ts @@ -1449,6 +1449,11 @@ export async function apiLogout() { method: "POST", headers: clientHeaders(), }); + // 主动登出后本标签页不再算"曾登录":否则登出后收到的首个 401 会被 + // notifySessionEnded 误判为"被顶下线",误弹"登录已失效"弹窗 + if (res.ok) { + sessionSeen = false; + } return res.json(); } @@ -1626,6 +1631,9 @@ export async function apiAdminAnalytics(range: "7d" | "30d" = "7d"): Promise { + // 游客尚无 CSRF cookie 时该 POST 必然 403(响应补发的 cookie 本请求用不上), + // 直接跳过:后续 GET 补发 cookie 之后的页面浏览照常上报 + if (!getCSRFToken()) return; try { await fetchWithRefresh("/api/telemetry/pageview", { method: "POST", -- 2.49.1