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

为何Postman中Auth::check()返回true,浏览器调用Laravel登出接口时返回false

问题根因与解决方案

核心错误

你的前端axios.post调用参数位置错误,导致Authorization请求头根本没有被正确发送到后端。
axios.post的语法规则是axios.post(请求地址, 请求体数据, 配置项),第二个参数是要提交的请求体,第三个参数才是包含headers的配置对象。你现在把headers放在了第二个参数的位置,只会作为请求体提交,不会被识别为请求头,后端自然拿不到token,鉴权失败。

修复后的前端代码

const logout = () => {    
    const headers = {
        "Accept" : "application/json",
        "Authorization" : `Bearer ${localStorage.getItem('token')}`
    };
    // 第二个参数传空对象作为请求体,第三个参数传headers配置
    axios.post('http://website.test/api/logout', {}, {headers})
        .then(res => {
            console.log(res);
        }).catch(err => {
            console.log(err);
        });
};

其他排查方向

如果修改后问题仍然存在,可以按以下步骤排查:

  • 确认token正确性:在构造headers前添加console.log(localStorage.getItem('token')),和Postman中使用的token对比,检查是否存在undefined、多余空格/换行、内容不一致的问题
  • 检查跨域配置:如果前端域名和后端API域名不一致,需要后端配置CORS规则,允许Authorization请求头跨域传递,否则浏览器会自动拦截该请求头
  • 确认请求头传递情况:可以在后端接口开头添加dd($request->header('Authorization'));,分别用Postman和浏览器发起请求,对比返回的头内容是否一致,快速定位是否是请求头传递问题
  • 检查Laravel鉴权配置:确认config/auth.php中api guard的驱动和你生成token的方式(Passport/Sanctum)匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 00:48:01