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

Angular中HTTP请求携带x-access-token仍未授权问题求助

Angular GET请求未授权问题排查与解决

核心问题分析

你遇到的未授权问题,大概率和两个点有关:多余的Content-Type设置以及请求头中Token带引号,结合你Postman能正常请求的情况,这两个点是关键。


1. GET请求无需设置Content-Type

GET请求没有请求体,Postman默认也不会为GET请求添加Content-Type头。你当前设置的application/x-www-form-urlencoded完全多余,甚至可能让后端对请求头的解析出现异常,直接去掉这个头即可。

2. Token带引号是关键诱因

你提到请求头里的Token带有引号,这肯定是问题根源——因为Postman里能用的Token是不带引号的。检查this.token的来源:

  • 如果是从后端接口返回的,确认后端返回的Token本身是否带了引号(比如JSON序列化时多套了一层)
  • 如果是从localStorage/sessionStorage取的,检查存的时候是不是把带引号的字符串存进去了

解决方法:拿到Token后先做去引号处理,比如用this.token = this.token.replace(/^"|"$/g, '')去掉首尾的引号。

3. 优化后的代码示例

onTable(){
  // 先处理Token,去掉可能存在的首尾引号
  const cleanToken = this.token.replace(/^"|"$/g, '');
  
  // 创建正确的请求头,只带x-access-token
  const headers = new HttpHeaders()
    .set('x-access-token', cleanToken);
  
  console.log('请求头:', headers);
  
  this.HttpClient.get("http://localhost:3000/read/all", { headers }).subscribe(
    res => {
      console.log(res)
    }, err => {
      console.log(err)
    }
  )
}

额外调试建议

  • 打开浏览器开发者工具的「网络」面板,查看实际发送的请求头,确认x-access-token的值是否和Postman里一致
  • 如果还是有问题,对比Postman的请求头和浏览器的请求头,找出差异项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:01:44