我正在使用 Http 拦截器并尝试重试失败的请求来处理401 error
。我正在尝试设置一个新标头来更新请求,但它不起作用。
我注意到我的标头没有通过请求设置,而是转到lazyUpdates
内部标头。任何人都可以告诉我为什么会发生这种情况。检查我的网络后,我发现通过重试请求旧标头被传递,这是'x-auth-token'
并且不会发送新的标头。
拦截器.ts
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
request = request.clone({
setHeaders: {
'x-auth-token': this.authService.getToken()
}
});
return next.handle(request).do(event => {}, err => {
if (err instanceof HttpErrorResponse && err.status == 401) {
request = request.clone({
setHeaders: {
'Content-Type': 'application/json',
'Authorization': 'sample-auth'
}
});
return next.handle(request)
}
});
}
包含延迟加载值而不是标头的标头:
我已经经历过这个link https://stackoverflow.com/questions/45202208/angular-4-interceptor-retry-requests-after-token-refresh
有任何想法吗?
我仍然有同样的问题。有人请建议我可以采取什么措施来正确更新标头。
我认为问题出在请求的克隆上。你需要做这样的事情。
request = request.clone({
headers: request.headers.set("Authorization", `sample-auth`)
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)