Angular 8 - HttpInterceptor - читать заголовки ответа - PullRequest
2 голосов
/ 11 февраля 2020

Мне не хватает http-заголовка в ответе от моего HttpInterceptor. Я могу получить тело, но не заголовки. Пожалуйста, смотрите прилагаемый вывод и мой код.

@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

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Wohoo Я исправил свою проблему.

Это не проблема Angular, а проблема с сервером. Мне нужно добавить еще один заголовок:

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

Angular игнорирует пользовательские заголовки, если они не указаны в "access-control-expose-header"

0 голосов
/ 11 февраля 2020

Используйте метод 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');
                    }
                }
            })

        );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...