You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Backpack删除条目时出现419 CSRF token mismatch错误如何解决

问题引发原因
  • Laravel框架默认要求所有POST、PUT、DELETE类型的请求必须携带正确的CSRF令牌完成身份校验,Backpack的删除操作调用的是DELETE类型接口,返回419 CSRF token mismatch错误,本质就是该删除请求没有携带服务端认可的有效CSRF令牌。
  • 常见触发场景:
    • 后台页面的CSRF元标签缺失:Laravel默认模板会在页面头部插入csrf元标签供前端JS读取,如果你自定义了后台布局模板漏加了该标签,Backpack的前端脚本就无法获取到正确的令牌。
    • 令牌过期:页面长时间停留未操作,服务端session过期导致原令牌失效,这种情况刷新页面即可恢复正常,如果每次点击删除都报错则不属于该场景。
    • Session配置错误:如果修改过session域名、HTTPS校验、驱动等相关配置,配置和当前站点环境不匹配也会导致令牌校验失败。
修复方案
  1. 补充CSRF元标签
    打开你的后台布局Blade文件(默认路径为resources/views/vendor/backpack/base/inc/head.blade.php),确认页面头部已经添加以下代码,没有的话手动补充即可:
<meta name="csrf-token" content="{{ csrf_token() }}">

这是Backpack前端脚本获取CSRF令牌的默认来源。

  1. 手动配置AJAX全局请求头
    如果你自定义过全局JS逻辑覆盖了Backpack的默认配置,可以在公共JS文件中添加以下代码,手动给所有AJAX请求加上CSRF令牌:
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

如果你的项目用Axios发请求,对应配置如下:

axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').content;
  1. 排除指定路由的CSRF校验(不推荐生产环境使用)
    如果仅删除路由需要临时关闭CSRF校验,可以打开app/Http/Middleware/VerifyCsrfToken.php文件,在$except属性中添加对应的删除路由:
protected $except = [
    'admin/tag/*/delete',
    // 其他需要排除CSRF校验的路由
];
  1. 排查Session配置
    检查项目根目录的.env文件中Session相关配置是否和当前站点环境匹配:
  • 如果站点是HTTPS协议,需要将SESSION_SECURE_COOKIE设置为true
  • 本地HTTP开发环境需要将SESSION_SECURE_COOKIE设置为false
  • SESSION_DOMAIN需要配置为你站点的实际域名,本地开发可以留空

内容的提问来源于stack exchange,提问作者Mireczko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:39:00