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

Angular拦截器未被调用且未纳入部署页面,是否为正常行为?

问题解答

这绝对不是正常行为,Angular的HTTP拦截器必须完成正确的注册配置,才会被打包进部署包并生效。你当前的问题核心是拦截器没有在Angular的依赖注入系统中注册为HTTP拦截器类型,哪怕用了@Injectable({ providedIn: 'root' })也不行——因为拦截器属于多提供者(multi-provider)范畴,需要通过HTTP_INTERCEPTORS令牌专门注册。

修复步骤

  1. 打开你的根模块文件(通常是app.module.ts),导入必要的依赖:
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { BasicAuthenticationHtppInterceptorService } from './path-to-your-interceptor-file'; // 替换成你拦截器文件的实际路径
  1. 在模块的providers数组中添加拦截器的注册配置:
@NgModule({
  // ...其他模块配置(declarations、imports等)
  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: BasicAuthenticationHtppInterceptorService,
      multi: true // 必须设置为true,允许同时注册多个HTTP拦截器
    }
  ]
})
export class AppModule { }

额外代码修正提示

你的拦截器里Authorization头的处理有个小问题:

  • Basic Authentication的头格式应为 Basic [base64编码的username:password]
  • 你现在用JSON.stringify(sessionStorage.getItem('token'))会给token套上额外的双引号,导致认证失败。如果你的token已经是带Basic前缀的正确格式,直接写成:
Authorization: sessionStorage.getItem('token')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:08:09