[英]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.