Angular 2 http.get未发送标头中的令牌

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({ '

我有一个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({
    '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对象。我已经更新了答案以反映这一点。