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

Laravel 11前端表单提交出现CSRF Token mismatch(419状态)问题求助

Laravel 11 CSRF Token Mismatch(419状态码)解决指南

核心排查与修复步骤

  • 确认表单包含CSRF令牌
    Blade模板的表单里必须添加@csrf指令,它会自动生成隐藏的token输入字段:

    <form method="POST" action="/complain/register">
        @csrf
        <!-- 其他表单输入字段 -->
        <button type="submit">提交投诉</button>
    </form>
    

    若用AJAX提交,需在请求头携带X-CSRF-TOKEN,先通过meta标签声明令牌:

    <meta name="csrf-token" content="{{ csrf_token() }}">
    

    AJAX请求示例:

    fetch('/complain/register', {
        method: 'POST',
        headers: {
            'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content,
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: new FormData(document.querySelector('form'))
    });
    
  • 验证路由归属web中间件组
    检查web.php中的提交路由,Laravel 11默认所有web路由自动应用web中间件(包含CSRF验证),若手动调整过路由分组,需确保路由在web中间件内:

    // 正确示例:默认路由已自动关联web中间件
    Route::post('/complain/register', [ComplainRegisterController::class, 'store']);
    
    // 手动分组时需明确包含web中间件
    Route::middleware('web')->group(function () {
        Route::post('/complain/register', [ComplainRegisterController::class, 'store']);
    });
    
  • 清除缓存并重置会话
    执行以下命令清除配置、路由及缓存,避免旧配置干扰:

    php artisan config:clear
    php artisan route:clear
    php artisan cache:clear
    

    同时确保storage/framework/sessions目录有读写权限:

    chmod -R 755 storage/framework/sessions
    
  • 检查会话驱动配置
    打开.env文件,确认SESSION_DRIVER未设置为array(该驱动不会持久化会话,导致令牌失效):

    SESSION_DRIVER=file
    
  • 添加CSRF验证例外(仅限安全场景)
    若为第三方回调等无需CSRF验证的特殊路由,可在app/Http/Middleware/VerifyCsrfToken.php中添加例外:

    protected $except = [
        '/complain/register',
    ];
    

    注意:仅在确认路由无CSRF风险时使用,避免安全漏洞。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:52:33