Laravel 8 + Next.js POST请求报419错误排查求助
解决Laravel 8 + Next.js POST请求419 CSRF验证失败问题
1. 修正.env配置错误
你的APP_URL存在多余冒号,且SESSION_DOMAIN、SANCTUM_STATEFUL_DOMAINS的引号会导致Laravel解析异常,修改为:
APP_URL=http://127.0.0.1:8000 FRONTEND_URL=http://localhost:3000 SESSION_DRIVER=cookie SESSION_DOMAIN=localhost SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1:3000
注意:SANCTUM_STATEFUL_DOMAINS需要包含前端完整域名+端口,之前遗漏了端口信息。
2. 调整路由与CSRF中间件配置
- 方案一:如果不需要该POST路由走CSRF验证,打开
app/Http/Middleware/VerifyCsrfToken.php,将路由加入$except数组:
protected $except = [ '/data/save', ];
- 方案二:将POST路由移至
routes/api.php(api路由组默认不加载CSRF验证中间件):
// routes/api.php Route::post('data/save','HomeController@save_data');
此时前端请求地址需改为http://127.0.0.1:8000/api/data/save。
3. 优化Axios配置
开启withXSRFToken,确保axios自动携带CSRF令牌:
const customFetch = axios.create({ baseURL: 'http://127.0.0.1:8000/', headers: { "X-Requested-With": "XMLHttpRequest", 'Content-Type': 'application/json', }, withCredentials: true, withXSRFToken: true, // 开启自动携带XSRF令牌 });
同时确保调用sanctum/csrf-cookie与POST请求使用同一个axios实例,且浏览器未禁用第三方cookie。
4. 清除缓存并重启服务
修改配置后执行以下命令清理Laravel缓存:
php artisan config:clear php artisan cache:clear php artisan route:clear
随后重启Laravel开发服务器与Next.js服务,确保配置生效。
内容的提问来源于stack exchange,提问作者mohammadK developer
相关产品推荐
相关产品推荐

