繁体   English   中英

Angular2 HTTP put添加授权标头

[英]Angular2 HTTP put add authorization header

我想在Angular中使用http put。 我的代码看起来像这样:

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

在此输入图像描述

这是正常的吗?

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

根据文档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......

当您执行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'
  })
};

你在标题中检查了Content-Type吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM