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
相关产品推荐
相关产品推荐

