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

Laravel表单添加enctype="multipart/form-data"时出现419 CSRF错误

Laravel表单添加enctype="multipart/form-data"时出现419 CSRF错误

嘿,我之前也碰到过一模一样的问题,咱们一步步来排查解决:

首先,先检查表单的核心写法,这是最容易踩的坑:

  • 你的form标签一定要加上method="POST",Laravel的CSRF保护只针对POST/PUT/DELETE这类非GET请求,要是没写method,浏览器默认用GET,这时候哪怕你加了token,验证逻辑也会出问题。
  • 推荐用Laravel自带的@csrf指令生成CSRF token,比手动写更靠谱,它会自动生成正确的隐藏域。比如正确的表单结构应该是这样:
    <form method="POST" enctype="multipart/form-data">
        @csrf
        <!-- 你的文件上传控件和其他表单字段 -->
        <input type="file" name="file">
        <button type="submit">提交</button>
    </form>
    
    要是你坚持手动写,得确保字段完整:<input type="hidden" name="_token" value="{{ csrf_token() }}">,别漏了type="hidden",虽然不影响验证,但规范写法能避免不必要的麻烦。

接下来排查session相关的问题:

  • 检查Laravel的session存储目录权限:默认在storage/framework/sessions,这个目录需要服务器用户有读写权限,不然session存不住,CSRF token验证自然会失败。可以运行chmod -R 755 storage来调整权限。
  • 清一下缓存试试:有时候缓存会导致token不匹配,运行php artisan cache:clear和php artisan config:clear,然后重启浏览器再测试。

最后确认路由的中间件:

  • 确保你处理表单提交的路由是放在web中间件组里的,web中间件默认包含了VerifyCsrfToken中间件,要是路由放在api组里,CSRF规则不一样,也会导致验证失败。

按这些步骤排查下来,应该就能解决问题啦!

备注:内容来源于stack exchange,提问作者Ovais Jetnetix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:50:33