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

Laravel项目迁移至新服务器后出现CSRF token不匹配问题求助

Laravel迁移新服务器后CSRF Token不匹配问题排查与解决

以下是针对该问题的具体排查和修复步骤:

一、检查.env核心配置项

  • 确认APP_URL设置为新服务器的HTTPS地址:APP_URL=https://www.vennocracy.com
  • 设置SESSION_SECURE_COOKIE=true(HTTPS环境必须开启,确保Cookie仅通过加密连接传输)
  • 配置SESSION_DOMAIN=.vennocracy.com(带前置点,支持主域名及子域名的会话共享,若仅主域名使用也可留空让Laravel自动识别)

二、清理服务器缓存与权限

执行以下命令刷新Laravel配置和缓存:

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

同时确保storage/framework/目录下的sessions、cache子目录拥有服务器进程的读写权限(通常设置为755或775)。

三、验证Cookie与HTTPS配置

  • 检查Nginx/Apache的HTTPS站点配置,确保Cookie的Path设置为/,未被限制到特定子路径
  • 确认SSL证书有效且浏览器信任,证书异常会导致浏览器拒绝存储会话Cookie,进而引发令牌不匹配
  • 若服务器开启了HTTP/2,可暂时关闭测试,部分HTTP/2环境下的头处理逻辑可能影响CSRF令牌的传递

四、优化CSRF令牌传递逻辑

除了在AJAX请求头中设置X-CSRF-TOKEN,可尝试将令牌直接加入FormData:

// 在submitHandler中添加
let formData = new FormData(form);
formData.append('_token', $('meta[name="csrf-token"]').attr('content'));

// 后续AJAX的data参数改为formData
data: formData,

同时确认页面头部已正确输出CSRF meta标签:

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

五、检查会话存储驱动

  • 若使用file驱动,确认storage/framework/sessions目录可正常写入
  • 若使用redis/database等远程驱动,验证新服务器与对应服务的连接正常,会话无法持久化会导致令牌验证失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:25:40