Laravel+Vite(React)登录认证419错误,XSRF-TOKEN未传递
解决Laravel + Vite React登录419错误及XSRF-TOKEN未传递问题
问题核心
419错误是Laravel CSRF验证失败导致的,根源在于前端未先获取Laravel生成的XSRF-TOKEN Cookie,使得登录请求缺少有效验证凭证。
具体解决步骤
1. 前端提前请求CSRF Cookie生成接口
Laravel Sanctum要求前端先调用/sanctum/csrf-cookie接口,触发服务端生成并下发XSRF-TOKEN Cookie,之后的POST请求才能通过验证。修改登录提交逻辑:
const handleSubmit = async (event) => { event.preventDefault(); try { // 先获取CSRF Cookie await axios.get('/sanctum/csrf-cookie'); // 再发送登录请求 await axios.post('/login',{email,password}); setEmail(""); setPassword(""); useNavigate("/"); } catch (error) { console.log(error); } };
2. 修正.env的SESSION_DOMAIN配置
本地开发环境下,将SESSION_DOMAIN设为localhost,确保Cookie能被前端正确读取:
SESSION_DOMAIN=localhost
3. 清理Laravel配置缓存
修改配置后执行以下命令,确保新配置生效:
php artisan config:clear
4. 确认Axios配置有效性
你的Axios实例已设置withCredentials: true,这会让浏览器自动携带Cookie,无需额外修改,只需保证baseURL与Laravel的APP_URL一致即可。
完成以上操作后,重启Laravel服务和Vite开发服务器,重新测试登录即可解决419错误。
内容的提问来源于stack exchange,提问作者Jonika
相关产品推荐
相关产品推荐

