I need to react (in interceptor class) on 403 Forbidden HTTP status (to obtain/refresh) JWT token and retry the request with fresh token.
In the code below, when server return error response it goes to success callback (not into the error callback as I expect) and the event is typeof object (which is useless in reaction on error response). The event object looks like this: {type:0}.
Question:
-How to properly handle httpErrorResponse (403 Forbidden) in HttpInterceptor when I need refresh accessToken and retry the http request?
import { HttpInterceptor, HttpRequest, HttpResponse, HttpHandler, HttpEvent } from '@angular/common/http'; import 'rxjs/add/operator/map'; @Injectable() class JWTInterceptor implements HttpInterceptor { constructor(private tokenService: TokenService) {} intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { let myHeaders = req.headers; if (this.tokenService.accessToken) { myHeaders = myHeaders.append('Authorization',`${this.tokenService.accessToken.token_type} ${this.tokenService.accessToken.access_token}`) } const authReq = req.clone({headers: myHeaders}); return next.handle(authReq).map((event: HttpEvent<any>) => { if (event instanceof HttpResponse) { // success callback } }, (err: any) => { if (err instanceof HttpErrorResponse { if (err.status === 403) { // error callback this.tokenService.obtainAccessToken() } } }) .retry(1); } }