[英]Cannot get HTTP Headers on Angular Interceptor
我在響應中的 nodejs (express) 應用程序中設置自定義標頭:
res.header('Vme','true')
next()
當我收到對客戶端的響應時,我可以在瀏覽器中正確看到標頭: browserHeaders
問題是我無法訪問 angular hhtp 攔截器中的標頭:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.loaderService.show()
return next.handle(request)
.pipe(
map((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
const message = event?.body?.message
if (message?.length) {
this.toastService.show(event?.body?.message, SeveritiesEmun.Success)
}
}
return event
}),
catchError(error => {
let errorMessage = error?.error || 'Error'
if (typeof errorMessage === 'object') {
errorMessage = error?.statusText || 'Error'
}
this.toastService.show(errorMessage, SeveritiesEmun.Fail)
return throwError(errorMessage)
}),
finalize(() => {
this.loaderService.hide()
})
)
}
在錯誤 (error) 和成功實例 ((event: HttpEvent )) 中,“headers”屬性不包含任何值。
您必須像這樣處理發送數據:
import { tap } from "rxjs/operators";
next.handle(req).pipe(
tap((event: HttpEvent<any>): void => {
if (event instanceof HttpResponse) {
// do whatever with event
}
})
);
然后您可以通過執行 event.headers.has("Vme") 檢查您的 header 是否被應用並通過event.headers.get("Vme")
event.headers.has("Vme")
訪問它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.