fix(server): prevent SPA fallback from swallowing API routes

- add ShouldSkipSPAFallback() deny prefixes: /api, /admin/api, /payments, /pay
- apply StaticWithConfig Skipper in both main http server and install server
- add unit tests for fallback skip matching behavior
This commit is contained in:
line-6000
2026-04-22 20:27:34 +08:00
parent 59aa71209c
commit 3a3a830d93
26 changed files with 82 additions and 26 deletions
+4 -3
View File
@@ -15,6 +15,7 @@
media="(prefers-color-scheme: dark)"
>
<link rel="manifest" href="/manifest.webmanifest">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="icon" href="/favicon.ico" sizes="48x48">
<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32">
@@ -155,7 +156,7 @@
content="GMPay 收款管理后台 - 多链 USDT 支付中间件管理面板"
>
<meta name="twitter:image" content="/images/logo.png">
<script type="module" crossorigin src="/assets/index-DNz-9fvN.js"></script>
<script type="module" crossorigin src="/assets/index-BMUjcbMl.js"></script>
<link rel="modulepreload" crossorigin href="/assets/messages-BovT1T-w.js">
<link rel="modulepreload" crossorigin href="/assets/with-selector-D_dmjfol.js">
<link rel="modulepreload" crossorigin href="/assets/useStore-1-QVtiLb.js">
@@ -169,7 +170,7 @@
<link rel="modulepreload" crossorigin href="/assets/useNavigate-Dg8CkCoa.js">
<link rel="modulepreload" crossorigin href="/assets/redirect-dE0wk0WH.js">
<link rel="modulepreload" crossorigin href="/assets/route-BxpeArPd.js">
<link rel="modulepreload" crossorigin href="/assets/_error-pTC_lrQu.js">
<link rel="modulepreload" crossorigin href="/assets/_error-IYb4e1PQ.js">
<link rel="modulepreload" crossorigin href="/assets/dist-DG5UMlBd.js">
<link rel="modulepreload" crossorigin href="/assets/dist-BEDXr2LC.js">
<link rel="modulepreload" crossorigin href="/assets/dist-BKfJQFVD.js">
@@ -188,7 +189,7 @@
<link rel="modulepreload" crossorigin href="/assets/zod-Cymc5bS-.js">
<link rel="modulepreload" crossorigin href="/assets/general-error-DKtbS-qh.js">
<link rel="modulepreload" crossorigin href="/assets/not-found-error-toRsO1Fi.js">
<link rel="modulepreload" crossorigin href="/assets/router-SUB4Nwz5.js">
<link rel="modulepreload" crossorigin href="/assets/router-I0SVmQhl.js">
<link rel="modulepreload" crossorigin href="/assets/Matches-LuvVcyUg.js">
<link rel="modulepreload" crossorigin href="/assets/font-provider-DvtNHF7l.js">
<link rel="modulepreload" crossorigin href="/assets/theme-provider-CRKya7Cx.js">