Angular2 HTTP put添加授权标头

时间:2018-03-08 11:04:07

标签: angular http-status-code-401 http-put

我正在尝试使用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,我注意到授权标题已添加到请求正文,而不是标题。

enter image description here

这是正常的吗?

如果我在Postman中手动添加授权标头作为标头,则请求按预期工作。

3 个答案:

答案 0 :(得分:4)

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

Http.put 方法签名是:

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

因此,您的第二个参数应该是数据/正文,而不是选项。

尝试:

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

答案 1 :(得分:2)

当您执行PUT请求时,您需要提供正文,因为您现在正在请求headers作为正文。所以你的请求就像是

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

答案 2 :(得分:0)

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'
  })
};

您是否在标题中检查了Content-Type

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