Angular 8-HttpInterceptor-读取响应标头

问题描述 投票:1回答:2

我的HttpInterceptor的响应中缺少http标头。我可以得到一个正文,但没有标题。请查看附件输出和我的代码。

@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);
            })

        );
    }
}

enter image description here

angular http-headers response angular-http-interceptors
2个回答
0
投票

使用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');
                    }
                }
            })

        );
    }
}

0
投票

哇,我解决了我的问题。

这不是Angular问题,而是服务器问题。我需要添加另一个标题:

"access-control-expose-headers": "mintargetapiversion"

如果未在“ access-control-expose-header”中指定自定义标头,Angular将忽略它们

© www.soinside.com 2019 - 2024. All rights reserved.