Angular通用的HttpInterceptor运行两次
创始人
2024-10-29 19:00:27
0

在Angular中,HttpInterceptor可以用于在发送HTTP请求和接收HTTP响应之前执行一些操作。然而,有时会遇到HttpInterceptor运行两次的问题。以下是解决这个问题的一种方法:

  1. 创建一个名为UniqueInterceptor的HttpInterceptor类。
import { Injectable } from '@angular/core';
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class UniqueInterceptor implements HttpInterceptor {
  intercept(request: HttpRequest, next: HttpHandler): Observable> {
    // 检查请求头中是否已经存在unique-interceptor标记
    if (request.headers.has('unique-interceptor')) {
      // 如果已存在,则直接通过
      return next.handle(request);
    }

    // 向请求头中添加unique-interceptor标记
    const modifiedRequest = request.clone({
      headers: request.headers.set('unique-interceptor', 'true')
    });

    // 继续处理修改后的请求
    return next.handle(modifiedRequest);
  }
}
  1. 在app.module.ts文件中,将UniqueInterceptor添加到HTTP_INTERCEPTORS提供者。
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';

import { AppComponent } from './app.component';
import { UniqueInterceptor } from './unique.interceptor';

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, HttpClientModule],
  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: UniqueInterceptor,
      multi: true
    }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

通过以上步骤,我们在每个HTTP请求中添加了一个名为"unique-interceptor"的请求头标记。当第二次拦截时,检查请求头中是否已经存在该标记,如果存在,则直接通过,避免了重复拦截的问题。

这样,HttpInterceptor就只会运行一次了。

相关内容

热门资讯

揭秘攻略“大唐撸麻雀辅助”从来... 揭秘攻略“大唐撸麻雀辅助”从来有开挂辅助工具(确实有挂);最新版2026是一款经典耐玩的益智游戏,不...
透视免费!aapoker辅助软... 透视免费!aapoker辅助软件合法-分享开挂透视辅助教程(有挂存在)1、下载好aapoker辅助软...
一分钟揭秘“微信小程序家长大贰... 一分钟揭秘“微信小程序家长大贰辅助工具”原来有开挂辅助助手(有挂分析);1、许多玩家不知道微信小程序...
透视规律!hhpoker透视挂... 透视规律!hhpoker透视挂码可以用-详细开挂透视辅助攻略(有挂方式)1、hhpoker透视挂码可...
分享认知“情怀游戏字牌辅助”真... 分享认知“情怀游戏字牌辅助”真是有开挂辅助挂(有挂技术)是一款可以让一直输的玩家,快速成为一个“必胜...
透视美元局!wepoker免费... 透视美元局!wepoker免费钻石-教你开挂透视辅助软件(有挂方法)1、wepoker免费钻石透视辅...
避坑细节“兴动游戏辅助”从前有... 避坑细节“兴动游戏辅助”从前有开挂辅助安装(有挂透视);最新版2026是一款经典耐玩的益智游戏,不仅...
透视辅助!德普之星app安卓版... 透视辅助!德普之星app安卓版破解版-解密开挂透视辅助工具(有挂头条)1、起透看视 德普之星app安...
实测必看“牵手跑的快小程序技巧... 您好:牵手跑的快小程序技巧这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户...
透视好友房!wpk真的有透视嘛... 透视好友房!wpk真的有透视嘛-专业开挂透视辅助攻略(有挂猫腻)wpk真的有透视嘛辅助器中分为三种模...