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

Laravel项目部署服务器后POST路由不支持、CSRF Token失效问题求助

问题排查与解决方案

第一步:检查会话存储目录权限

你当前使用file作为会话驱动,服务器上storage/framework/sessions目录需要授予Web服务运行用户(常见为www-data)读写权限,执行以下命令修复:

chmod -R 755 storage/framework/sessions
chown -R www-data:www-data storage/framework/sessions

本地环境权限要求宽松不会触发该问题,服务器权限限制会导致会话无法写入,每次请求生成新会话,直接引发CSRF Token校验失败。

第二步:修正HTTPS会话Cookie配置

你config/session.php中默认开启了SESSION_SECURE_COOKIE,该配置要求只有HTTPS请求才会携带会话Cookie:

  • 如果你的站点未部署SSL证书、使用HTTP访问,在.env文件新增配置:SESSION_SECURE_COOKIE=false
  • 如果你的站点为HTTPS访问,确认.env中的APP_URL为https开头,且服务器SSL配置完整。

第三步:校验Web服务器重写规则

你的表单使用Laravel方法欺骗,通过POST请求携带_method=PATCH参数模拟PATCH请求,需确认Web服务器配置正确:

  • Nginx站点配置中需包含以下规则,确保所有请求都转发至Laravel入口,不丢失POST参数:
location / {
    try_files $uri $uri/ /index.php?$query_string;
}
  • Apache需确认开启mod_rewrite模块,项目根目录的.htaccess文件正常生效。
    如果参数丢失,Laravel无法识别方法欺骗,就会把请求判定为普通POST请求,触发「路由不支持POST方法」的报错。

第四步:清理服务端缓存

部署到生产环境后执行以下命令清除旧配置、路由缓存,确保修改的配置生效:

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

清理后删除浏览器本地Cookie再重试,避免旧的无效会话Cookie干扰校验。

第五步:修正SESSION_DOMAIN配置

你当前.env中SESSION_DOMAIN填写的{.mydomain.com}需要去掉大括号,正确写法为.mydomain.com;如果使用IP地址访问站点,直接删除该配置项留空即可。


内容的提问来源于stack exchange,提问作者Hassan Elshazly Eida

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:39:00