You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular请求报错自动重复发送问题及解决方法咨询

解决Angular请求报错时重复发起请求的问题

问题根源在你的HTTP拦截器代码中:当捕获到非401错误时,你直接返回了next.handle(request),这会重新发起一次原请求,这就是报错时自动触发第二次请求的原因。

修正后的拦截器代码

intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
    return next.handle(request).pipe(
        catchError((err: any) => {
            if (err.status === 401) {
                return this.handle401Error(request, next);
            }
            // 非401错误直接抛出,交由业务代码的catchError处理
            return throwError(() => err);
        })
    );
}

关键说明

  • 当错误状态不是401时,不要调用next.handle(request),而是用throwError把错误重新抛出,这样错误会流到你业务请求代码里的catchError分支处理,不会触发重复请求。
  • 你的业务请求代码(this.http.post(...)部分)本身逻辑正常,catchError里返回of(false)的逻辑可以保留,它会正常处理错误并终止流。

内容的提问来源于stack exchange,提问作者Nathan30

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:04:59