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

Laravel 8迁移至新域名后POST请求出现419页面过期问题

解决Laravel迁移域名后POST请求419/Ajax CSRF Token不匹配问题

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

  • 修正Session与CORS域名配置
    打开config/session.php,确认domain字段设置为新域名(比如.yournewdomain.com支持二级域名,或直接写完整域名);同时检查config/cors.php中的allowed_origins数组,将新域名加入其中,确保跨域请求被允许。另外,.env文件里的SESSION_DOMAIN要同步设置为新域名,不要带http://或https://前缀。

  • 调整Cloudflare缓存与安全设置

    • 登录Cloudflare后台,针对新域名的POST路由(或整个应用页面)创建页面规则,设置缓存级别为“忽略缓存”,避免Cloudflare缓存了包含过期CSRF令牌的页面。
    • 检查Cloudflare的SSL模式,确保设置为“完全”或“严格”,避免SSL层问题导致Cookie无法正常传递;同时确认“Cookie Security”设置未过度限制新域名的Cookie发送。
  • 重置Session相关存储与密钥
    再次执行以下命令确保彻底重置:

    php artisan key:generate
    php artisan cache:clear
    php artisan session:clear
    php artisan config:clear
    

    手动删除storage/framework/sessions目录下的所有文件,清除旧的Session数据。

  • 前端CSRF令牌校验检查

    • 所有POST表单必须包含@csrf Blade指令,确保表单提交时携带有效令牌。
    • Ajax请求需在请求头中携带X-CSRF-TOKEN,可以通过页面meta标签获取并全局配置:
      <meta name="csrf-token" content="{{ csrf_token() }}">
      
      // 以jQuery为例
      $.ajaxSetup({
          headers: {
              'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          }
      });
      

    注意不要前端缓存令牌值,确保每次请求都获取最新的令牌。

  • 验证服务器目录权限
    确认storage/framework/sessions、storage/framework/cache等目录的权限为755或775,确保Laravel拥有读写权限,避免Session无法正常存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:40:10