Удалить авторизацию из заголовков запросов, в частности, http-вызова

#angular

#angular

Вопрос:

Перехватчик —

 export class AuthInterceptor implements HttpInterceptor {
  constructor(private loaderService: LoaderService, private router: Router) { }
  intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
    this.showLoader();
    request = request.clone({
      setHeaders: {
        Authorization: `${localStorage.getItem('authToken')}`, 
      }
    });
    return next.handle(request).pipe(tap((event: HttpEvent<any>) => {
      if (event instanceof HttpResponse) {
        this.hideLoader();
      }
    },
      error => {
        this.hideLoader();
        if (error.status === 401) {
          this.router.navigate(['../auth']);
        }
      }),
    );
  }
  

Обслуживание —

  getList() {
    return this.commonHttpService.get(`common/List`);  
  }
  

Вызов TS API —

  List() {
    this.Service.getList()
      .subscribe((res: any) => {
        this.Data = res.body.data;
      });
  }
  

Я хочу удалить авторизацию из заголовков запросов при вызове этого API.

Как мы можем это сделать? Искал много ответов на stackoverflow, но ничего не сработало. Может кто-нибудь, пожалуйста, помочь?

Ответ №1:

В перехватчике у вас может быть список URI, в которые вы не будете добавлять заголовок Auth.

 if (unauthorizedUris.every(x => x !== request.url))
    request.clone({
        setHeaders: {
            Authorization: `${localStorage.getItem('authToken')}`, 
    }});