Angular2 HTTP 添加授权 header

Angular2 HTTP put add authorization header

我正在尝试使用 Angular 中的 http。我的代码如下所示:

const url ='this is my url';
const headers = new Headers({'Authorization': 'this is my token'});
return this.http.put(url, {headers: headers}).toPromise().then......

但我一直收到 401 Unauthorized 作为请求状态代码。 我试图将我的请求从 Chrome 网络选项卡复制到 Postman,我注意到授权 header 被添加到请求 body,而不是 headers。

这正常吗?

如果我在 Postman 中手动添加授权 header 作为 header 请求将按预期工作。

根据文档 https://angular.io/api/http/Http

Http.put 方法签名是:

put(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>

因此,您的第二个参数应该是 data/body,而不是选项。

尝试:

return this.http.put(url, {}, {headers: headers}).toPromise().then......

当您执行 PUT 请求时,您需要提供正文,因为现在您正在将 headers 作为请求的正文传递。所以你的请求应该是

this.http.put(url, body, headers)

https://angular.io/guide/http#adding-headers

我在angular2+框架中使用httpclient时,一般是这样使用的:

import { HttpHeaders } from '@angular/common/http';

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

您是否在 header 秒内检查了 Content-Type

如果要在服务层添加set auth header,调用httpClient时,可以使用Http拦截器(https://alligator.io/angular/httpclient-interceptors/)