Я работаю над приложением angular 6, в котором я хочу добавить jwt-токен в заголовок авторизации каждого запроса. Для этого сценария я хочу использовать перехватчик.
Код выглядит так:
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from "@angular/common/http";
import { Injectable } from "@angular/core";
import { Observable } from "rxjs";
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let sessionId = localStorage.getItem('sessionId');
if (sessionId) {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${sessionId}`
}
});
console.log("With AuthHeader");
}
return next.handle(request);
}
}
Вот мой код для отправки запроса:
httpQuery(ressource): Observable<T[]> {
var absoluteUrl = this.getAbsoluteUrl(ressource);
console.log("Sending");
return this.httpClient
.get<T[]>(absoluteUrl);
}
Однако я сталкиваюсь со следующей проблемой: перехватчик запускается, но ПОСЛЕ отправки запроса. Я вижу это в консоли разработчика, где сообщение журнала от http-метода появляется прямо перед сообщением журнала от перехватчика:
Как видите, это ведет к ответу 401 от сервера, который ожидает заголовок авторизации.
Я прочитал кучу руководств и вопросов о перехватчике, но не вижу своей ошибки.
Может быть, кто-нибудь из парней подскажет мне?
Спасибо и всего наилучшего, Алекс