[英]Angular 8 - HttpInterceptor - read response headers
I am missing http headers in a response from my HttpInterceptor.我在 HttpInterceptor 的响应中缺少 http 标头。 I can get a body but not headers.
我可以得到一个正文,但不能得到标题。 Please see attached output and my code.
请参阅附加的输出和我的代码。
@Injectable()
export class ApiVersionInterceptor implements HttpInterceptor {
intercept(
req: import("@angular/common/http").HttpRequest<any>,
next: import("@angular/common/http").HttpHandler
): import("rxjs").Observable<import("@angular/common/http").HttpEvent<any>> {
return next.handle(req).pipe(
tap(httpEvent=>{
// Skip request
if(httpEvent.type === 0){
return;
}
console.log("response: ", httpEvent);
})
);
}
}
Wohoo I fixed my problem.哇哦我解决了我的问题。
It is not Angular problem but server problem.这不是 Angular 问题,而是服务器问题。 I need to add another header:
我需要添加另一个标题:
"access-control-expose-headers": "mintargetapiversion"
Angular ignores custom headers if they are not specified in "access-control-expose-header"如果未在“access-control-expose-header”中指定,Angular 会忽略自定义标头
Use httpEvent.headers.get()
method like shown below:使用
httpEvent.headers.get()
方法,如下所示:
@Injectable()
export class ApiVersionInterceptor implements HttpInterceptor {
intercept(
req: import("@angular/common/http").HttpRequest<any>,
next: import("@angular/common/http").HttpHandler
): import("rxjs").Observable<import("@angular/common/http").HttpEvent<any>> {
return next.handle(req).pipe(
tap((httpEvent: HttpEvent<any>) =>{
// Skip request
if(httpEvent.type === 0){
return;
}
console.log("response: ", httpEvent);
let minTargetApiVersion : string;
if (httpEvent instanceof HttpResponse) {
if(httpEvent.headers.has('mintargetapiversion')) {
minTargetApiVersion = httpEvent.headers.get('mintargetapiversion');
}
}
})
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.