Laravel Livewire发送动作遇语法错误,如何不关闭CSRF验证解决?
Laravel Livewire CSRF 错误解决方案(Unexpected token 错误)
确认页面正确引入Livewire脚本
确保页面末尾(</body>前)包含@livewireScripts指令,Livewire会通过这个指令自动注入CSRF令牌到请求头,不要将其放在<head>标签内。手动添加CSRF元标签(自动注入失效时)
在页面<head>中添加元标签,确保Livewire能读取到有效令牌:<meta name="csrf-token" content="{{ csrf_token() }}">检查VerifyCsrfToken中间件配置
不要关闭全局CSRF验证,打开app/Http/Middleware/VerifyCsrfToken.php:- 确保
$except数组中没有错误添加Livewire路由(默认/livewire/*不需要加入例外) - 若项目使用自定义路由前缀,确认Livewire的请求路径(如
/prefix/livewire/*)能被中间件正确处理
- 确保
清除缓存并重新生成密钥
执行以下命令清理缓存,避免旧配置或密钥导致令牌不匹配:php artisan cache:clear php artisan config:clear php artisan view:clear php artisan key:generate排查服务器响应内容
打开浏览器开发者工具(F12)→ Network标签,触发Livewire动作后查看请求响应:- 若返回419状态码或HTML错误页面(而非JSON),说明CSRF令牌验证失败,需回到前面步骤检查令牌注入逻辑
- 错误中的
Unexpected token通常是因为JSON解析器遇到了HTML内容导致的
确认版本兼容性
确保Laravel与Livewire版本匹配(如Laravel 10对应Livewire 3.x,Laravel 9支持Livewire 2.x/3.x),版本不兼容可能引发CSRF处理异常
内容的提问来源于stack exchange,提问作者K.b. Yudees
相关产品推荐
相关产品推荐

