Angular 2-从Http请求获取标头

Angular 2-从Http请求获取标头,angular,angular2-services,angular2-http,Angular,Angular2 Services,Angular2 Http,我的所有后端API请求在头中返回新的令牌信息,即使它们抛出异常也是如此。在下一个请求中,我需要发送这些新的令牌信息 因此,我试图找出一种独特的标准方法来实现这一点,因此我尝试: let requestOptions = new RequestOptions(Object.assign({ method: method, url: environment.apiHost + url, body: body, headers: authenticate

我的所有后端API请求在头中返回新的令牌信息,即使它们抛出异常也是如此。在下一个请求中,我需要发送这些新的令牌信息

因此,我试图找出一种独特的标准方法来实现这一点,因此我尝试:

let requestOptions = new RequestOptions(Object.assign({
      method: method,
      url: environment.apiHost + url,
      body: body,
      headers: authenticatedRequest ? this.requestService.getAuthHeaders() : this.requestService.getJsonHeaders(),
      withCredentials: authenticatedRequest
    }));

this.http.request(new Request(requestOptions))
        .map((res:Response) => { this.storageService.setAuthInfo(res.headers); res.json() } )
        .catch((error:any) => Observable.throw(error.json().error || 'Server error'));
我面临的问题是,当我订阅此方法时,
res
变量返回
undefined


您有什么建议吗?

问题是您必须在使用
{}
时从
map
函数显式返回响应
res.json()

this.http.request(new Request(requestOptions))
   .map((res:Response) => { 
       this.storageService.setAuthInfo(res.headers); 
       return res.json();
   } )
   .catch((error:any) => Observable.throw(error.json().error || 'Server error'));

类似的

它解决了相关的问题,但我面临一个新问题:当发生错误时,它不会通过map()传递,因此它不会注册新的令牌。解决方案是在catch()上设置新的令牌(
this.storageService.setAuthInfo(res.headers);
),除非存在在成功和错误返回时调用的请求方法。有什么想法吗?@PaspRuby我认为这是一个值得提出的新问题,其他人也可以带着想法加入进来……好的,给你:@Pankaj Parkar