Angular HttpClient 设置请求头后为什么没生效? 慕容奕同 提问于 2026-02-17 09:11:47 阅读 61 框架 在Angular项目里用HttpClient发送POST请求时设置了Authorization头,但后端一直返回401。检查代码没问题,重启服务也没用,是不是哪里漏掉了配置?求大神指点! 代码这样写的: this.http.post('/api/data', body, { headers: new HttpHeaders({ 'Authorization': 'Bearer ' + token }) }) 同时在拦截器里也尝试过添加,但抓包发现请求头确实没带上… Angular 我来解答 赞 10 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 程序猿亚楠 Lv1 省事的话直接检查下你是不是在拦截器里把 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 加载更多 相关推荐 1 回答 31 浏览 Angular里用HttpClient发请求为啥收不到响应数据? 我在Angular组件里用HttpClient调后端接口,请求能发出去,Network面板也看到返回了200和JSON数据,但subscribe里拿不到data,控制台还报错说“Cannot read... 欧阳胜洋 框架 2026-02-28 23:31:20 2 回答 22 浏览 Angular服务注入后为什么在组件里拿不到数据? 我在Angular里写了个UserService,用HttpClient去请求用户信息,但在组件里调用时总是返回undefined,明明控制台能看到网络请求成功了啊。 我试过把subscribe里的逻... 爱学习的曦月 框架 2026-03-30 19:13:13 2 回答 59 浏览 Angular里用Observable订阅后数据不更新是怎么回事? 我在Angular组件里用HttpClient请求数据,返回的是Observable,subscribe之后第一次能拿到数据,但后续服务端数据变了,页面却没更新。是不是漏了什么操作? 我试过用asyn... Mr.青青 框架 2026-03-06 12:03:18 2 回答 51 浏览 为什么OWASP ZAP无法拦截Angular应用的某些AJAX请求? 我在用OWASP ZAP测试Angular项目时发现,虽然设置了代理8080,大部分请求都能拦截,但文件上传和实时搜索的两个AJAX请求完全没反应。用F12看网络面板明明有这些请求,ZAP里却显示空白... 萌新.艳珂 安全 2026-02-03 21:34:30 1 回答 24 浏览 Angular 自定义管道为什么没有生效? 我在 Angular 项目里写了个自定义管道,用来格式化手机号,但模板里用了却没反应,数据还是原样显示。 已经加到 declarations 里了,也确认模块导入没问题。比如我这样用:{{ user.... Designer°瑞雪 框架 2026-03-29 17:58:20 2 回答 44 浏览 Angular 自定义管道为什么没有生效? 我在 Angular 项目里写了个自定义管道用来格式化日期,但模板里用了却没反应,控制台也没报错,是不是哪里注册错了? 我已经在 app.module.ts 里声明了这个管道,也加到了 declara... 一桂霞 框架 2026-03-18 14:29:16 2 回答 51 浏览 Angular中为什么第三方异步回调不触发变更检测? 我在用Angular开发时,用第三方库发起异步请求,数据返回后赋值给组件属性但视图没更新。尝试用NgZone.run()包裹也没效果,控制台没有任何报错,这是为什么? 比如这样调用:this.http... 萌新.淑宁 框架 2026-02-12 11:24:44 2 回答 87 浏览 Angular路由守卫如何在导航到某个页面时动态设置标题? 我在用Angular的CanActivate守卫尝试动态设置页面标题时遇到了问题,按照文档写的代码运行后标题没变化。比如在守卫里用了TitleService,但控制台没报错就是没反应。 这是我的守卫代... Tr° 珍珍 框架 2026-02-05 08:42:32 1 回答 22 浏览 为什么在 Angular 中 setTimeout 不触发变更检测? 我最近在 Angular 组件里用 setTimeout 更新一个变量,但页面没刷新。明明数据变了,模板却没更新。我查了说是 Zone.js 的问题,但我没动过相关配置啊。 这是我的模板: <d... Mc.小青 框架 2026-03-30 20:49:14 1 回答 34 浏览 Angular升级到Ivy后模板绑定突然失效了? 我刚把项目从Angular 8升级到12,启用了Ivy编译器,结果发现一个组件的属性绑定不生效了。控制台没报错,但页面上就是显示不出来值。之前在View Engine下完全正常。 我试过重启开发服务器... 南宫丽君 框架 2026-03-12 14:59:17
HttpHeaders 是不可变的,你 set 之后必须用返回的新实例,比如:
或者拦截器里这样写才生效:
试试这样写保险点:
如果还不行,可能是后端CORS配置问题,让后端加上对Authorization头的支持。