我正在try 学习如何使用HttpInterceptor向应用程序向API发出的每个HTTP请求添加几个头.我有这个拦截器:

import { Injectable } from '@angular/core';

import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';

import { Observable } from 'rxjs/Observable';


@Injectable()
export class fwcAPIInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    const authReq = req.clone({
      headers: req.headers.set('Content-Type', 'application/json')
    });

    console.log('Intercepted HTTP call', authReq);

    return next.handle(authReq);
  }
}

除了'Content-Type'个标题之外,我还需要添加一个'Authorization',但我不知道怎么做(Angular HttpHeaders的文档只是方法列表,没有任何解释).

我该怎么做?谢谢

推荐答案

Edit:以下建议在 comments 中我统一了两个答案

Overwriting all headers

@Injectable()
export class fwcAPIInterceptor implements HttpInterceptor {
  intercept (req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

  const authReq = req.clone({
    headers: new HttpHeaders({
      'Content-Type':  'application/json',
      'Authorization': 'my-auth-token'
    })
  });

  console.log('Intercepted HTTP call', authReq);

  return next.handle(authReq);
}

Adding more headers without overwriting分(Ketan Patil分-请参阅本文的答案)

const authReq = req.clone({
    headers: req.headers.set('Content-Type', 'application/json')
        .set('header2', 'header 2 value')
        .set('header3', 'header 3 value')
});

Angular相关问答推荐

PrimeNG侧栏清除primeNG消息.为什么?

MAT表的内联文本编辑-未刷新编辑图标

如何动态呈现组件并以Angular 访问它们的方法?

有没有其他代码可以用函数的方式写成Angular ?

material 对话框中没有合适的注塑

ANGLING HTTP.GET()返回包含数据的数组

Angular 16:信号更新未能更新视图

MAT折叠面板的动态开启和关闭无法工作

NgRx Effects 抛出类型错误,我不知道发生了什么

在父组件的子组件中使用 ng-template

我想将一个对象传递给一个子组件.我做了一切,但没有任何效果. (Angular )

正确理解 angular14 中的注入 - 必须从注入上下文中调用注入()

关闭 Dynamsoft Web Twain 弹出窗口

类继承支持

Angular 2+ 一次性绑定

angular2:错误: TypeError: Cannot read property '...' of undefined

angular2中的httpinterceptor类似功能是什么?

默认情况下如何在Angular中 Select mat-button-toggle

Angular CLI 输出 - 如何分析Bundle 文件

RxJS:takeUntil() Angular 组件的 ngOnDestroy()