当前位置:   article > 正文

angular HTTP拦截器阻止请求继续进行并中断请求链

angular HTTP拦截器阻止请求继续进行并中断请求链

在Angular的HTTP拦截器中,如果你希望在特定条件下阻止请求继续进行并中断请求链,直接返回 false 实际上不会达到预期效果。Angular的HTTP拦截器期望拦截器方法 intercept 返回一个 Observable<HttpEvent<any>>。如果你想要中断请求,应该抛出一个错误或者返回一个错误的 Observable

例如,如果你在拦截器中判断到请求不符合要求,可以通过抛出错误或返回一个带有错误信息的 Observable 来中断请求

  1. import { Injectable } from '@angular/core';
  2. import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse } from '@angular/common/http';
  3. import { Observable, throwError } from 'rxjs';
  4. import { catchError } from 'rxjs/operators';
  5. @Injectable()
  6. export class MyInterceptor implements HttpInterceptor {
  7. intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
  8. // 假设我们有一些条件判断
  9. if (/* 不符合要求的条件 */) {
  10. // 抛出错误,中断请求
  11. return throwError(new HttpErrorResponse({ status: 403, statusText: 'Forbidden by Interceptor' }));
  12. }
  13. // 如果条件符合,继续处理请求
  14. return next.handle(request).pipe(
  15. catchError(error => {
  16. // 可以在这里处理错误,决定是否重新抛出或转换错误
  17. return throwError(error);
  18. })
  19. );
  20. }
  21. }

在这个例子中,如果请求不符合你的要求,拦截器会抛出一个 HttpErrorResponse,模拟一个HTTP错误响应,从而中断请求流程。这会使得请求不会到达服务器,而且错误可以通过订阅的错误处理逻辑来捕获。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/665299
推荐阅读
相关标签
  

闽ICP备14008679号