簡體   English   中英

Angular 8 - HttpInterceptor - 讀取響應頭

[英]Angular 8 - HttpInterceptor - read response headers

我在 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);
            })

        );
    }
}

在此處輸入圖片說明

哇哦我解決了我的問題。

這不是 Angular 問題,而是服務器問題。 我需要添加另一個標題:

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

如果未在“access-control-expose-header”中指定,Angular 會忽略自定義標頭

使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM