【发布时间】:2018-09-05 19:42:52
【问题描述】:
我们正在使用 Angular 5 和 Spring 2 OAuth 后端。 现在,当我发送旧令牌时,它当然已过期。它返回状态码:401 和带有无效令牌的错误响应等。现在我在日志中或当我发现错误时看不到它。我想得到错误,以便我可以首先记录它,然后刷新令牌或将他发送到登录页面。
现在,如果我通过以下方式订阅请求:
.subscribe(res => {
//just random stuff.
}, err => {
console.log("error", err);
});
I just see this response in the log with an unknown error like in this image
可能是后端故障?因为我还在日志中看到类似“不存在'Access-Control-Allow-Origin'标头”的错误,尽管这是因为令牌无效。
Although I can see this response code in Google Chrome Dev Tools 和一个 401 状态码。
所以我尝试自己寻找解决方案。我已经有了一个拦截器并尝试了一些解决方案
return next.handle(authReq)
.catch(error => {
console.log("im in here");
console.log(error);
return Observable.throw(error);
});
Http 服务只是抛出一个错误,即 catch 不是一个函数,甚至没有记录错误或“我在这里”。
我也尝试过在 next.handle 之后使用 .do,但遇到了与 catch 相同的错误
.do((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
// do stuff with response if you want
}
}, (err: any) => {
console.log(err);
if (err instanceof HttpErrorResponse) {
if (err.status === 401) {
}
}
});
我在 http.get 之后尝试过使用管道,但它也不起作用。
http.get(...).pipe(
retry(3), // retry a failed request up to 3 times
catchError(this.handleError) // then handle the error
);
【问题讨论】:
标签: javascript angular angular-http angular-http-interceptors angular-httpclient