Angular HTTP 拦截器是一种强大的工具,用于在 HTTP 请求发送到服务器之前或响应返回到客户端之后对其进行处理。如果你遇到了拦截器重复请求不起作用的问题,可能是由于以下几个原因:
HTTP 拦截器允许你在请求/响应周期中注入自定义逻辑。它们可以用于日志记录、错误处理、请求重试、添加认证头等。
HttpClientModule
中。AppModule
的 providers
数组中正确地提供了拦截器。AppModule
的 providers
数组中正确地提供了拦截器。switchMap
或其他操作符来取消之前的请求。switchMap
或其他操作符来取消之前的请求。以下是一个简单的拦截器示例,它在每个请求中添加一个认证头:
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = localStorage.getItem('auth_token');
if (token) {
const cloned = req.clone({
headers: req.headers.set('Authorization', `Bearer ${token}`)
});
return next.handle(cloned);
} else {
return next.handle(req);
}
}
}
确保在你的模块中注册了这个拦截器:
@NgModule({
imports: [HttpClientModule],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }
]
})
export class AppModule { }
通过以上步骤,你应该能够解决 Angular HTTP 拦截器重复请求不起作用的问题。如果问题仍然存在,请检查是否有其他中间件或服务可能影响了请求的处理。
领取专属 10元无门槛券
手把手带您无忧上云