Angular 2-从Http请求获取标头
我的所有后端API请求在头中返回新的令牌信息,即使它们抛出异常也是如此。在下一个请求中,我需要发送这些新的令牌信息 因此,我试图找出一种独特的标准方法来实现这一点,因此我尝试: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
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