Ich schrieb eine eckige (4.3.6) HttpInterceptor, um einige Headerfelder hinzuzufügen, aber die Kopfzeile wird nicht aktualisiert, wenn ich sie im Debugger untersuchen. Irgendeine Idee?Angular HttpInterceptor nicht ändern Header
import {Injectable} from '@angular/core';
import {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest} from '@angular/common/http';
import {Observable} from 'rxjs/Observable';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log('AuthInterceptor at work');
const contentTypeReq = req.clone({
headers: req.headers.set('Content-Type', 'application/json')
});
const token = localStorage.getItem('token');
if (token) {
const authReq = contentTypeReq.clone({
headers: req.headers.set('Authorization', 'Bearer ' + token)
});
return next.handle(authReq);
}
// Pass on the cloned request instead of the original request.
return next.handle(contentTypeReq);
}
}
Das Festlegen des Inhaltstyps ist nutzlos. Angular macht das für Sie. Haben Sie Ihren Code mit dem Debugger ausgeführt? Oder einfach console.log() hinzugefügt, um zu überprüfen, ob das Token gesetzt ist? –
Ja - Ich habe es im Debugger ausgeführt und sehe, dass es aufgerufen wird. Aber der Header wird nicht aktualisiert. Siehe https://angular.io/guide/http#setting-new-headers – netshark1000