【问题标题】:Angular 2 - Get Headers From Http RequestsAngular 2 - 从 Http 请求中获取标头
【发布时间】:2016-11-23 14:14:34
【问题描述】:

我的所有后端 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'));

我面临的问题是,当我 subscribe 使用此方法时,res 变量正在返回 undefined。

你有什么建议?

【问题讨论】:

    标签: angular angular2-services angular2-http


    【解决方案1】:

    问题是您必须在使用{} 时从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'));
    

    类似answer here

    【讨论】:

    • 它解决了相关问题,但我面临一个新问题:发生错误时,它不是通过map()传递的,所以它没有注册新的令牌。解决方案也将在 catch() 上设置新令牌 (this.storageService.setAuthInfo(res.headers);),除非存在在成功和错误返回时调用的请求方法。有什么想法吗?
    • @PaspRuby 我会说它值得提出新问题,其他人也可以提出想法..
    • 好的,这里是:stackoverflow.com/questions/40769737/…@Pankaj Parkar
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    相关资源
    最近更新 更多