问题描述
我正在尝试通过以下doFilter方法打印来自服务器的错误消息:
public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws
IOException,servletexception {
final HttpServletRequest request = (HttpServletRequest) req;
final HttpServletResponse response = (HttpServletResponse) res;
if(HttpMethod.OPTIONS.name().equalsIgnoreCase(request.getmethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
final String authorization = request.getHeader("Authorization");
//Check if the request is not login
if(!request.getRequestURI().contains("login")) {
//Check if token startsWith Bearer and != null
if(authorization == null || !authorization.startsWith("Bearer ") || !check(request.getRequestURI(),authorization.substring(7))) {
throw new servletexception("Your user details are unauthorized,please log in again");
}
//Check if the token is valid and updated,if not then return status 401
boolean bool = validatetoken(authorization.substring(7));
if(!bool) {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
} else {
response.addheader("Access-Control-Expose-Headers","Authorization");
response.setHeader("Authorization",newToken);
}
}
}
chain.doFilter(req,res);
}
在Angular中,我尝试使用拦截方法来打印来自servletexception的字符串:
intercept(req: HttpRequest<any>,next: HttpHandler) {
if (localStorage.getItem('Authorization')) {
req = req.clone({
setHeaders: {
Authorization: localStorage.getItem('Authorization')}
})
}
return next.handle(req).pipe(
tap(res => {
if (res instanceof HttpResponse) {
localStorage.setItem("Authorization","Bearer " + res.headers.get('Authorization'));
}
}),catchError(err => {
if(err && err.status === 0){
this.err = "Server Is Down";
}
if(err && err.status === 401){
this.err = "Your user details are unauthorized,please login again";
}
localStorage.removeItem('Authorization');
//Output using the Data service to Login component.
this.dataService.setErr(this.err);
this.router.navigateByUrl('login');
return throwError(err);
}))
}
在catchError块内,我得到状态0和未知错误,因此它始终显示“服务器已关闭”消息。
有什么主意我该如何捕捉错误并在Angular中打印消息?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)