Angular 2 - 获取Http请求的头信息

4

所有后端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

你有什么建议吗?

1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
3
问题在于必须从你使用的 {} 中明确返回响应 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'));

Similar answer here


它解决了相关的问题,但我面临一个新问题:当出现错误时,它不会通过map()传递,因此它不会注册新的令牌。解决方案是在catch()中设置新的令牌(this.storageService.setAuthInfo(res.headers);),除非有一个请求方法被调用并返回成功和错误。有任何想法吗? - Pasp Ruby
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Pankaj Parkar
好的,这里是链接:http://stackoverflow.com/questions/40769737/angular-2-http-request-method-which-is-called-on-both-success-and-error-cases @Pankaj Parkar - Pasp Ruby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,