fix: 统一 CSRF token 获取方式,修复 token 刷新后缓存失效

- utils.js getCSRFToken() 改为从 cookie 优先读取,meta 标签作为后备
- show.html 5处移除 csrfToken 缓存变量,改用 getCSRFToken() 动态获取
- studio/posts.html/drafts.html 移除 {{ .CSRFToken }} 模板硬编码
- studio-editor.js 移除本地 getCsrfToken(),改用共享 getCSRFToken()
- settings/index.html messages/index.html 改用 getCSRFToken()
- admin posts.js/comments.js 移除本地/死代码 CSRF 获取,统一用共享方法
This commit is contained in:
2026-06-02 18:47:22 +08:00
parent a83e0840d7
commit abe1388f8c
9 changed files with 24 additions and 42 deletions

View File

@ -4,11 +4,13 @@
'use strict';
/**
* 从 <meta name="csrf-token"> 读取 CSRF 令牌
* 由服务端 CSRF 中间件注入到页面模板的 <meta> 标签
* 获取 CSRF 令牌 — 优先从 cookie 读取与服务端验证源一致token 刷新后保持最新),
* meta 标签作为后备(部分页面可能未设置 cookie
* @returns {string} CSRF 令牌,未找到时返回空字符串
*/
function getCSRFToken() {
var match = document.cookie.match(/(?:^|;\s*)mlb_csrf=([^;]*)/);
if (match && match[1]) return match[1];
var meta = document.querySelector('meta[name="csrf-token"]');
return meta ? meta.getAttribute('content') : '';
}