【发布时间】:2017-09-26 05:53:01
【问题描述】:
我编写了一个有角度的 (4.3.6) HttpInterceptor 来添加一些标头字段,但是如果我在调试器中检查它们,标头不会得到更新。有什么想法吗?
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);
}
}
【问题讨论】:
-
设置 content-type 没用。 Angular 会为您做到这一点。您是否使用调试器运行过代码?或者只是添加了 console.log() 来检查令牌是否已设置?
-
是的 - 我在调试器中运行它并看到它的beeing被调用。但是标题没有更新。见angular.io/guide/http#setting-new-headers
标签: angular angular-http-interceptors