У меня есть следующий сервис для моего компонента:
@Injectable({
providedIn: 'root',
})
export class MyService {
constructor(private httpClient: HttpClient ) { }
}
someFunction() {
this.httpClient.post(url, data, options)
}
У меня также есть HttpInterceptor
, как показано ниже:
@Injectable({
providedIn: 'root'
})
export class HttpInterceptorService implements HttpInterceptor {
constructor() {}
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
return next.handle(req).do(
(event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
console.log('############### event status: ', event.status);
}
console.log('########### event is: ', event);
},
(err: any) => {
if (err instanceof HttpErrorResponse) {
console.log('HTTP error status is: ', err.status);
}
console.log('error is: ', err);
}
);
}
}
Теперь мой почтовый вызов может быть получентри типа кодов ответа: либо 200
, либо 302
, либо 307
. Теперь в случаях, когда я получаю 200
все работает нормально. Однако, когда я получаю 302
или 307
, значение по умолчанию HttpClient
продолжает следовать за Location
в ответе вместо того, чтобы дать мне контроль. URL-адрес перенаправления является обновленным URL-адресом, но для него требуется другой тип обработки (GET
вместо POST
и добавлены некоторые дополнительные параметры).
В случае таких ошибок, как 400
, я правильно получаю ошибкув моем Interceptor
блоке catch.
Есть ли способ отключить перенаправление HTTP и обработать перенаправление в моем коде?