Angular HttpClient 设置请求头后为什么没生效?

慕容奕同 阅读 61

在Angular项目里用HttpClient发送POST请求时设置了Authorization头,但后端一直返回401。检查代码没问题,重启服务也没用,是不是哪里漏掉了配置?求大神指点!

代码这样写的:


this.http.post('/api/data', body, {
  headers: new HttpHeaders({
    'Authorization': 'Bearer ' + token
  })
})

同时在拦截器里也尝试过添加,但抓包发现请求头确实没带上…

我来解答 赞 10 收藏
二维码
手机扫码查看
2 条解答
程序猿亚楠
省事的话直接检查下你是不是在拦截器里把 headers 重新 clone 了但没加回去,或者用错了 HttpHeaders 的 immutable 特性——
HttpHeaders 是不可变的,你 set 之后必须用返回的新实例,比如:

const headers = new HttpHeaders().set('Authorization', 'Bearer ' + token);
this.http.post('/api/data', body, { headers });


或者拦截器里这样写才生效:

const newReq = req.clone({
setHeaders: {
Authorization: 'Bearer ' + token
}
});
点赞 7
2026-02-24 08:17
小玉灿
小玉灿 Lv1
检查一下是不是在拦截器里不小心覆盖了headers,或者后端接口要求的是小写的'authorization'。另外Angular默认会对OPTIONS请求不带自定义header,看看是不是预检请求的问题。

试试这样写保险点:
this.http.post('/api/data', body, {
headers: new HttpHeaders({
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
}).set('Authorization', 'Bearer ' + token)
})


如果还不行,可能是后端CORS配置问题,让后端加上对Authorization头的支持。
点赞 9
2026-02-17 09:13