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

携带Token调用后端接口失败排查:Postman正常、授权前可访问

Token授权后无法从后端获取数据的排查方案

前端通过Angular的HttpClient携带Bearer Token请求后端接口时无法获取数据,但Postman测试完全正常,且未引入授权机制前接口可正常访问。相关代码如下:

getOrders(): Observable<Order[]> {
    let token = this.authService.getToken();
    console.log(token);
    let head_obj = new HttpHeaders().set(
      'Authorization', 'Bearer ' + token
    );
    
    console.log(head_obj);
    return this.httpClient.get<Order[]>(this.baseUrl,{headers:head_obj});
}

可能的问题及排查方向:

  • Authorization头格式错误:检查Bearer 和token之间的空格是否存在且仅一个,后端对这个格式要求严格,少空格或多空格都会导致解析失败。可以通过浏览器Network面板查看实际发送的请求头,确认格式是否为Bearer xxxxxxx。
  • 跨域请求未携带凭证:如果后端依赖Cookie验证会话,Postman会自动处理Cookie,但Angular HttpClient需要显式开启withCredentials,否则请求会被后端拒绝。修改代码如下:
    return this.httpClient.get<Order[]>(this.baseUrl,{
      headers: head_obj,
      withCredentials: true
    });
    
  • Token有效性问题:把前端console打印的token复制到Postman中替换原有token测试,如果也无法请求,说明token本身过期、无效或权限不足;如果Postman能用,再检查前端获取的token是否被截断、转义,或者authService.getToken()返回了空值。
  • 请求头被全局拦截器覆盖:如果项目中有HTTP拦截器,可能会修改或覆盖你手动设置的Authorization头。可以暂时禁用拦截器测试,或者在拦截器中确保不会覆盖自定义的授权头。
  • 后端CORS配置缺失:浏览器会拦截跨域请求中未被后端允许的请求头,需要确认后端CORS配置里是否添加了Access-Control-Allow-Headers: Authorization,Postman不受CORS限制,所以不会出现这个问题。

内容的提问来源于stack exchange,提问作者Klaudiusz Kudła

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:40:16