Я хочу перехватить ВСЕ запросы xhr для добавления аутентификации в моем приложении Angular, для этого я добавляю HttpInterceptor, но он не запускается для запросов XHR, есть идеи, как я могу перехватить эти запросы ??
Спасибо.
auth.interceptor.ts
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
import { Observable, from } from 'rxjs';
import { OktaAuthService } from '@okta/okta-angular';
import { Injectable } from '@angular/core';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private oktaAuth: OktaAuthService) {
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return from(this.handleAccess(request, next));
}
private async handleAccess(request: HttpRequest<any>, next: HttpHandler): Promise<HttpEvent<any>> {
// Only add an access token to whitelisted origins
const allowedOrigins = ['http://localhost'];
console.log('Intercept HTTP request to adding Bearer token');
if (allowedOrigins.some(url => request.urlWithParams.includes(url))) {
const accessToken = await this.oktaAuth.getAccessToken();
if (accessToken) {
request = request.clone({
setHeaders: {
Authorization: 'Bearer ' + accessToken
}
});
} else {
//No token; proceed request without bearer token
console.log('No token added to HTTP request');
return next.handle(request).toPromise();
}
}
return next.handle(request).toPromise();
}
}