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

Windows本地Docker环境中Laravel应用CSRF Token不匹配问题求助

Laravel Docker环境POST请求CSRF Token不匹配排查建议
  • 检查Cookie的域名/路径配置
    Docker本地开发常用localhost、127.0.0.1或自定义域名(如laravel.test),需确认.env里的SESSION_DOMAIN与当前访问域名完全匹配,localhost场景直接留空或设为localhost即可,不要额外加端口号。同时确认SESSION_PATH保持默认的/,避免因路径错误导致Cookie无法正常携带。

  • 验证请求中Token的实际携带情况
    打开浏览器开发者工具(F12)的Network面板,查看POST请求的详细信息:

    • 表单提交场景:确认Form Data里的_token字段值,和页面渲染时csrf_token()输出的内容完全一致;
    • AJAX请求场景:检查请求头的X-CSRF-TOKEN或请求体里的_token参数是否正确。
      同时查看Response Headers中的Set-Cookie,确认Session Cookie已正常返回并被浏览器存储。
  • 检查Docker端口映射与Cookie SameSite设置
    若本地使用非80/443端口(如8000、8080),将.env里的SESSION_SAMESITE设为Lax(本地开发场景足够)。另外需确保Docker端口映射后,容器内应用能正确识别请求的真实域名和端口,避免因内外端口不一致导致Cookie校验失败。

  • 清理Session与配置缓存

    • 手动清除浏览器对应域名的Cookie;
    • 进入Docker容器执行Laravel缓存清理命令:
      php artisan cache:clear
      php artisan config:clear
      php artisan session:clear
      

    避免旧配置缓存干扰校验逻辑。

  • 检查反向代理的头部传递(若启用)
    若使用Nginx等反向代理容器,需在配置中传递正确的请求头部,确保Laravel能识别真实请求环境:

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    

    同时在.env中设置APP_TRUSTED_PROXIES=*(本地开发可临时使用),或在config/trustedproxy.php中添加代理服务器IP到信任列表。

  • 确认Token生成与Session存储的一致性
    检查页面渲染时的csrf_token()是否来自当前有效Session,避免页面加载前出现Session重置操作。另外确认容器内Session存储驱动(默认是file)的读写权限,storage/framework/sessions目录需确保www-data用户可读写,防止Session无法正常存储导致每次请求生成新Token。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:42:33