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

Laravel 10+jQuery AJAX下CSRF Token不匹配问题求助

解决Laravel 10 + jQuery AJAX CSRF Token不匹配问题

1. 验证Token的实际取值一致性

  • 打开浏览器控制台执行 console.log($('meta[name="csrf-token"]').attr('content')),把输出值和后端执行 session()->token() 得到的结果对比。如果不一致,检查app.blade.php里的meta标签是否正确渲染:
    <meta name="csrf-token" content="{{ csrf_token() }}">
    
  • 确认bootstrap.js的全局AJAX配置生效,修改后必须执行 npm run dev 或 npm run build 重新编译前端资源:
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    

2. 排查请求缓存与重定向问题

  • 打开浏览器Network面板,查看请求是否存在301/302重定向。重定向后的新请求可能会丢失或替换原Token,导致匹配失败。
  • 在AJAX请求中添加 cache: false 参数,避免浏览器缓存旧请求:
    $.ajax({
        url: '/your-target-endpoint',
        method: 'POST',
        cache: false,
        // 其他请求参数
    });
    

3. 检查Session与Cookie配置

  • 确认.env文件中 SESSION_DOMAIN 与当前域名一致,本地开发可留空或设为localhost;线上环境需匹配实际域名。
  • 检查 SESSION_SECURE_COOKIE:本地HTTP开发时设为false,线上HTTPS环境设为true,否则Cookie无法正常携带,导致Session内的Token与请求Token不匹配。

4. 避免重复携带Token引发冲突

你当前同时在data中携带_token参数、在headers中设置X-CSRF-TOKEN,两种方式二选一即可。建议保留全局的X-CSRF-TOKEN头,删除data里的_token参数,避免后端解析异常。

5. 核对路由与中间件配置

  • 确保请求对应的路由在web中间件组内,web组默认包含VerifyCsrfToken中间件;若误将路由放在api组,反而会因CSRF验证逻辑不同导致报错。
  • 若需临时跳过特定路由的CSRF验证,可在app/Http/Middleware/VerifyCsrfToken.php的$except数组中添加该路由,但不建议全局跳过验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:22:10