DeepSeek V4.1 Flash 出了,我就趁机试了一下。
用deepseek进行了以下网站更新:
resources/js/ui-ajax.js:13-21:
function uiCsrfToken() {
const meta = document.querySelector('meta[name="csrf-token"]');
if (meta && meta.content) return meta.content;
const input = document.querySelector('input[name="_token"]');
if (input && input.value) return input.value;
const m = document.cookie.match(/(?:^|;\s*)XSRF-TOKEN=([^;]*)/);
return m ? decodeURIComponent(m[1]) : "";
}
三个 admin 页面的 <head> 里都没有 meta[name="csrf-token"]:
| 页面 | meta | 页面内 input[name="_token"] |
|---|---|---|
/admin |
无 | 有(md-upload-form 里的 @csrf,admin/index.blade.php) |
/admin/posts |
无 | 没有(页面自有表单一个都没有) |
/admin/users |
无 | 没有 |
那么 posts / users 页面的 token 是从哪来的?来自 resources/views/common/header.blade.php:38 附近 —— 已登录态下右上角"点此登出"表单里的 @csrf 生成的隐藏 _token。也就是说,这两个管理页的所有写操作(删除/恢复/彻底删除/切换管理员/上传内容)目前依赖一个跟管理功能毫无关系的登出按钮。
同时第三段兜底 document.cookie 的写法本身也有问题:Laravel 的 XSRF-TOKEN cookie 是加密值,只能作为 X-XSRF-TOKEN 请求头发送(服务端会解密),直接塞进 X-CSRF-TOKEN 会因为拿到密文而校验失败。
fetch、加 @guest 更严格的条件、把登出挪进下拉菜单)就会静默让 posts / users 页面全部写操作返回 419,而 /admin 因为有自己的表单仍然正常 —— 这类"只坏一半"的问题最难排查。TODO LIST (全新的)
- 重构后端上传文章逻辑。
- 支持文章加载图片。
- 支持邮件提示。
(完)
展开评论区