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

如何解决Inertia.js在虚拟主机下的CSRF-TOKEN不匹配问题?

解决Inertia.js在虚拟主机环境下的CSRF-TOKEN不匹配419错误

可能的原因及解决方案

1. 修正Laravel的域名相关配置

  • 打开项目根目录下的.env文件,确保以下配置正确:
    APP_URL=http://app.local
    SESSION_DOMAIN=.app.local
    
    (SESSION_DOMAIN前的点用于适配该域名下的所有子域名,若无需求也可直接设为app.local)
  • 执行命令清除配置缓存:
    php artisan config:clear
    

2. 确保CSRF令牌正确传递

  • 检查Laravel根模板(通常是resources/views/app.blade.php)中是否包含正确的CSRF meta标签:
    <meta name="csrf-token" content="{{ csrf_token() }}">
    
  • 若令牌仍无法自动获取,可在Inertia初始化时手动注入:
    在resources/js/app.js中添加令牌全局属性:
    import { createApp, h } from 'vue'
    import { createInertiaApp } from '@inertiajs/vue3'
    
    createInertiaApp({
      resolve: name => import(`./Pages/${name}`),
      setup({ el, App, props, plugin }) {
        return createApp({ render: () => h(App, props) })
          .use(plugin)
          .mixin({ methods: { route } })
          .config.globalProperties.$csrfToken = document.querySelector('meta[name="csrf-token"]').content
          .mount(el)
      },
    })
    

3. 清除浏览器缓存与Cookie

  • 由于之前使用php artisan serve时生成的Cookie与虚拟主机域名冲突,需手动清除浏览器中app.local域名的Cookie,或使用无痕模式测试。

4. 检查虚拟主机配置

  • 确认虚拟主机的根目录指向Laravel项目的public文件夹,避免路径错误导致资源加载或Cookie传递异常;
  • 检查本地hosts文件是否添加了域名解析:
    127.0.0.1 app.local
    

内容的提问来源于stack exchange,提问作者Himel shipu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:46:01