fix: 修正令牌鉴权拦下静态资源、全量地图数据每 20 秒重传两个问题

- 静态资源改到鉴权中间件之前:浏览器加载 index.html 时带的 ?token= 不会附加到
  style.css / app.js 的子请求上,原先一并拦截会导致页面缺样式缺脚本
- 全量地图数据(实测 11.5 万区块约 1MB JSON)改为按需拉取:
  勾选「显示全部邦国」、手动刷新地图或超过 5 分钟时才拉全量,
  定时刷新只拉己方领土(约 4KB)并复用上一次的全量数据
- 配置热更新时直接替换控制器配置对象,去掉多余的一层浅合并

测试:新增静态资源可加载的回归用例,154 个用例全绿。
这个提交包含在:
lyizai
2026-09-27 17:19:20 +08:00
父节点 a12a24c716
当前提交 223cf719b6
共修改 5 个文件,包含 49 行新增和 14 行删除
+4 -1
查看文件
@@ -135,6 +135,10 @@ class WebConsole {
const app = this.app;
app.disable('x-powered-by');
app.use(express.json({ limit: '1mb' }));
// 静态资源(控制台页面本身)不需要令牌:浏览器加载 index.html 时带的 ?token= 不会
// 附加到后续 style.css / app.js 的子请求上,若一并拦截会导致页面样式与脚本 404/401。
// 页面本身不含任何敏感信息,真正需要保护的是下面的 /api 接口。
app.use(express.static(path.join(__dirname, 'public')));
app.use((req, res, next) => {
if (!this._authorized(req)) {
res.status(401).json({ ok: false, message: '未授权:请在 URL 上带 ?token= 或提供 X-Auth-Token 头' });
@@ -142,7 +146,6 @@ class WebConsole {
}
next();
});
app.use(express.static(path.join(__dirname, 'public')));
app.get('/api/status', (req, res) => {
res.json({ ok: true, data: this.statusPayload() });