如何在我的应用程序中使用来自拦截器的 header
How to use header from interceptor in my app
我在后端的 HTTP 请求中添加了一个 responseWithHeader。我可以看到它正常工作,因为它出现在我的开发人员工具的网络选项卡中。
我在 Angular 中使用 interceptor
来处理 HTTP 请求和响应,但我遇到的问题如下:
我已将我的应用程序的版本号作为 header 添加到响应中,然后我需要将 header 中的此版本与我的 package.json 中声明的版本进行比较.如果响应 header 中的版本比 package.json 中的版本新,我想显示一个 `Snackbar`` 提示用户刷新页面。但是,我无法弄清楚如何 'extract' header 值,并将其解析为我的应用程序组件可以订阅的服务。
这是我的拦截器方法:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = this.cookieService.get('token');
let headers = req.headers;
if (token) {
headers = headers.append('Authorization', token);
}
const authReq = req.clone({
headers: headers
});
return next.handle(authReq).pipe(
map((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
console.log(event.headers.get('x-web-frontend-version'));
}
return event;
}));
}
每当我尝试调用方法时,例如 this.baseService.handleVersion(INSERT HEADER VALUE)
,应用程序都会抛出错误。如何将此 header 解析为服务方法?
- 你需要header“正确”,解决方法在这里:Angular 2 http Observable request not returning response header
- 创建一种中介服务以将版本保留为主题,并在您需要的任何地方订阅
我在后端的 HTTP 请求中添加了一个 responseWithHeader。我可以看到它正常工作,因为它出现在我的开发人员工具的网络选项卡中。
我在 Angular 中使用 interceptor
来处理 HTTP 请求和响应,但我遇到的问题如下:
我已将我的应用程序的版本号作为 header 添加到响应中,然后我需要将 header 中的此版本与我的 package.json 中声明的版本进行比较.如果响应 header 中的版本比 package.json 中的版本新,我想显示一个 `Snackbar`` 提示用户刷新页面。但是,我无法弄清楚如何 'extract' header 值,并将其解析为我的应用程序组件可以订阅的服务。
这是我的拦截器方法:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = this.cookieService.get('token');
let headers = req.headers;
if (token) {
headers = headers.append('Authorization', token);
}
const authReq = req.clone({
headers: headers
});
return next.handle(authReq).pipe(
map((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
console.log(event.headers.get('x-web-frontend-version'));
}
return event;
}));
}
每当我尝试调用方法时,例如 this.baseService.handleVersion(INSERT HEADER VALUE)
,应用程序都会抛出错误。如何将此 header 解析为服务方法?
- 你需要header“正确”,解决方法在这里:Angular 2 http Observable request not returning response header
- 创建一种中介服务以将版本保留为主题,并在您需要的任何地方订阅