Angular 2 http.get未发送标头中的令牌
我有一个post方法,它正在工作并从服务器获取我的令牌Angular 2 http.get未发送标头中的令牌,angular,angular2-services,angular2-http,Angular,Angular2 Services,Angular2 Http,我有一个post方法,它正在工作并从服务器获取我的令牌 authenticate() { let url = this.server + 'authenticate'; let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOptions({ headers: headers }); let body = JSON.stringify({ '
authenticate() {
let url = this.server + 'authenticate';
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let body = JSON.stringify({
'password': 'admin',
'rememberMe': true,
'username': 'admin'
});
return this._http.post(url, body, options)
.map((res: Response) => res.json())
.subscribe(result => this.token = result.id_token);
}
其中,this.server
是一个包含服务器url的字符串。而this.\uhttp
只是角度http的一个实例
private _http: Http;
constructor(http: Http) {
this._http = http;
}
而this.token
只是一个空字符串private-token:string代码>
现在,所有这些都正常工作,我正在从服务器获取正确的令牌我的问题是当我尝试在get方法中使用这个令牌时,它不起作用,我得到一个401(未经授权)错误
我的buggy获取方法是:
getData(src) {
let url = this.server + src;
let headers = new Headers({'Authorization': 'Bearer ' + this.token});
return this._http.get(url, headers)
.map((res: Response) => res.json())
.subscribe(res => console.log('res'));
}
Http.get将url字符串和可选的RequestOptionsArgs作为参数。在RequestOptions对象中包装头应该可以做到这一点
getData(src) {
let url = this.server + src;
let headers = new Headers({'Authorization': 'Bearer ' + this.token});
let options = new RequestOptions({ headers: headers });
return this._http.get(url, options)
.map((res: Response) => res.json())
.subscribe(res => console.log('res'));
}
所以问题是,我应该在发送标题时在标题周围添加{}
。get应该是this.\u http.get(url,{headers})
我实际上就是这样做的,所以在.map()调用.map((res:Response=>return res.json())
谢谢你,但这不是问题。如果你想使用{},我写了答案可能有效,但正确的方法是使用RequestOptions对象。我已经更新了答案以反映这一点。