我正在使用Http拦截器并尝试重试失败的请求来处理401 error
。我正在尝试设置一个新标头来更新请求,但它无效。
我注意到我的标头没有设置请求,而是转到lazyUpdates
内部标头。任何人都可以告诉我为什么会发生这种情况。检查我的网络后,我发现通过重试请求传递了旧标头'x-auth-token'
并且未发送新标头。
interceptor.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
有什么想法吗?
我仍然遇到同样的问题。有人会建议我如何正确更新标题。
答案 0 :(得分:0)
我认为问题在于克隆请求。您需要执行以下操作。
request = request.clone({
headers: request.headers.set("Authorization", `sample-auth`)
});