标签: interceptor

Angular 6 - HTTP 拦截器和网络 :: ERR_TIMED_OUT

我的问题是关于最近我一直摸不着头脑的事情——

在我的拦截器中,我有一些代码可以解析和处理某些错误,并将根据错误的状态代码等以某些方式执行操作(我没有包含此代码,因为它实际上对这个问题没有任何作用,但如果有人有充分的理由为什么我应该包括它,我绝对可以。

我试图弄清楚如何net :: ERR_TIMED_OUT在拦截器中处理(使用谷歌浏览器/歌剧)。我已经追踪到一个点,我可以知道请求正在构建并正在“处理”,但在那之后,请求和响应都消失了。我最初的想法是,XMLHttpRequest某个地方出现了错误,并且它以某种方式被抑制,并且响应被丢弃。

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const intercepted = this.setHeaders(req);
    return this.SetPendingRequests(next.handle(intercepted))
            .pipe(catchError((err): Observable<HttpEvent<any>> => {
                return this.ParseErrorResponse(err);
            }));
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过添加finalize(() => {})它,并且在每种情况下都工作得很好,除了这个,ERR_TIMED_OUT基本上似乎决定所有事情都必须停止。

我也尝试过直接连接XMLHttpRequest,而 Angular 对此并不太友好——因为我觉得问题的根源可能源于它本身。

所有 google/stackoverflow 搜索几乎都表明这是一个本地问题,但我觉得好像应该有某种方法在我的代码中处理它,所以如果用户在使用我的应用程序时遇到此错误,我会能够适当地处理这个问题。基本上,我只想要任何请求ERR_TIMED_OUT(奇怪的是,其他浏览器基本错误返回“未知错误”类型的错误 - 这是我发现的唯一奇怪的异常值,它只是停止了一切。我希望看到如果其他人遇到了这个问题/愿意帮助我找出它。

感谢对此事的任何帮助并提前致谢,

timeout http xmlhttprequest interceptor angular

2
推荐指数
1
解决办法
1万
查看次数

使用 Angular HTTP 拦截器管理多个同时异步服务调用的加载器/旋转器

我已经实现了 Http 拦截器,并在服务启动时显示微调器,并在服务成功/失败时隐藏微调器。

代码示例:

        intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

             return next.handle(req).pipe(
                tap((event: HttpEvent<any>) => {
                    if (event instanceof HttpResponse && event.body.errCode != undefined) {
                        // show_spinner

                    }
                }),
                finalize(()=>{
                    // hide_spinner
             })
         }
Run Code Online (Sandbox Code Playgroud)

例如,有两个服务调用同时发生;因此,将显示与两个调用相对应的微调器,但第一个服务在2 秒内完成,第二个服务在5 秒内完成;现在,旋转器将在第一个调用完成后隐藏,将无法确认第二个服务调用。

httprequest interceptor rxjs angular-http-interceptors angular

2
推荐指数
1
解决办法
3754
查看次数

Angular 9 - 拦截器 - 如果 catcherror 中没有错误,则返回什么?

我在角度应用程序中有一个拦截器

整个想法是jwt 令牌的有效期为 30'

  • 偶尔我会从状态代码中收到错误,所以我会处理它

  • 但有时,没有错误,所以我不想抛出任何异常

因为我没有返回任何东西,所以我收到了这个错误

您在需要流的地方提供了“未定义”。您可以提供 Observable、Promise、Array 或 Iterable。

除非我抛出像 throwError("OK"); 这样的假异常

这是我的拦截函数

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> 
{
    
    return next.handle(request).pipe(catchError(err => 
    {
        const error = (err.error?err.error.message:null) || err.statusText;

        switch (err.status) {
            case 401:
            {
                // token expired -> goto login, dont return error
                this.appService.clearUserSession();
                this.router.navigate(['login']);
                <<<<<<<<<<<<<<< HERE I DON'T WANT TO THROW AN ERROR, WHAT TO RETURN ?
            }
            break;
            case 500:
            {
                return throwError(error);
            }
            break;
            default:
            {
                  if(error!="OK")
                  {
                       return throwError(error);
                  }
                  else …
Run Code Online (Sandbox Code Playgroud)

interceptor angular

2
推荐指数
1
解决办法
3698
查看次数

仅当从某个类调用该方法时才拦截该方法?

使用 AspectJ 或 Spring Aop(无关紧要),是否可以仅在从某个类中调用该方法时才拦截该方法?

例子:

public class House() {

    String address;

    public House(String address) {
       this.address = address;
    }   
   
    public String getAddress() {
      return this.address();
   }
}


public class BadHouse() {

    public void doNotIntercept() {
      House h = new House("1234");
      h.getAddress();
   }
}

public class GoodHouse() {
     
     public void intercept() {
     House h = new House("4567");
     h.getAddress();
    }

}

public class houseInterceptor() {

     @Before("execution(com.example.House.getAddress(..))")
     // only intercept on GoodHouse.class??? 
     public void beforeGetAddress();

}
Run Code Online (Sandbox Code Playgroud)

在这种情况下可以使用“within”吗?谢谢

java aop spring interceptor

2
推荐指数
1
解决办法
191
查看次数

Spring Boot 不接收从 Angular 客户端添加的请求标头

在我的演示应用程序中,我遇到一个问题,即我没有收到从 Angular 客户端添加到 Spring boot 服务器的请求标头。作为安全措施,我有 SSL(安全套接字层)和 CORS(跨源资源共享)配置。在我的应用程序中,CSRF(跨站点请求伪造)被禁用。我使用 JWT(JSON Wen Token)作为每个请求的用户身份验证机制。这就是我需要从标头中提取 JWT 密钥的地方。我将从我的应用程序中添加代码示例,请帮助我找出问题。

\n

角拦截器

\n
import { Injectable } from \'@angular/core\';\nimport { HttpEvent, HttpInterceptor, HttpResponse, HttpHandler, HttpRequest, HttpHeaders } from \'@angular/common/http\'; \nimport { UserService } from \'./user.service\';\nimport { Observable } from \'rxjs\';\n\n/*Interceptor\n  Often you\xe2\x80\x99ll want to intercept HTTP requests or responses before they\xe2\x80\x99re handled else where in the application*/ \n\n@Injectable({\n  providedIn: \'root\'\n})\nexport class InterceptorService implements HttpInterceptor {\n\n  /**\n   * Constructor of InterceptorService. \n   * @param userService UserService\n   */\n  constructor(private …
Run Code Online (Sandbox Code Playgroud)

java interceptor http-headers spring-boot angular

2
推荐指数
1
解决办法
6167
查看次数

如何测试NestJs响应拦截器

我试图遵循这个线程,但我不断收到错误。

变换响应.interceptor.ts:

import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { ApiResponseInterface } from '@walletxp/shared-interfaces';

@Injectable()
export class TransformResponseInterceptor<T>
  implements NestInterceptor<T, ApiResponseInterface<Record<string, unknown>>>
{
  intercept(context: ExecutionContext, next: CallHandler): Observable<ApiResponseInterface<Record<string, unknown>>> {
    return next.handle().pipe(map((data) => ({ success: true, data })));
  }
}

Run Code Online (Sandbox Code Playgroud)

对于它的测试,transform-response.interceptor.spec.ts:

import { TransformResponseInterceptor } from './transform-response.interceptor';
const interceptor = new TransformResponseInterceptor();

const executionContext: any = {
  switchToHttp: jest.fn().mockReturnThis(),
  getRequest: jest.fn().mockReturnThis(),
}; …
Run Code Online (Sandbox Code Playgroud)

http interceptor typescript jestjs nestjs

2
推荐指数
1
解决办法
4990
查看次数

aroundInvoke:奇怪的名字?

请求有关此拦截器注释的更多信息。为什么拦截器注解叫@AroundInvoke而不是@BeforeInvoke?

例如,我可以在操作 API 之前调用访问验证吗?如何保证在实际调用方法之前完成访问验证?VM 或 CDI 实现是否会执行某些操作,但不会阻止实际调用,而是并行执行此拦截器?

如果我使用Google Guice AOP 方法拦截器,我确信访问验证失败将确定方法调用是否开始。我如何确保雅加达 CDI 也会采取类似的行为?

无法在规范中找到此信息

可以在这里找到相关问题。但上述具体问题仍未得到解答。

java interceptor cdi

2
推荐指数
1
解决办法
167
查看次数

axios拦截器和默认标头有什么区别?

我很好奇 axios 拦截器和默认标头之间的区别。

我想在标题中添加授权。

我知道我可以使用 axios 拦截器和默认标头管理授权标头。(为所有 axios 请求附加授权标头

我不确定何时分别使用拦截器和默认标头。

难道只是axios提供了两种方法吗?

interceptor axios

2
推荐指数
1
解决办法
2248
查看次数

如何拦截GRPC响应

我正在将 flutter 用于我的移动应用程序。我可以拦截请求。但我不知道如何在flutter中拦截GRPC中的响应。

如何在flutter中拦截GRPC响应?

interceptor grpc flutter

2
推荐指数
1
解决办法
810
查看次数

Spring 3 HandlerInterceptorAdapter.请求以404之前的拦截器结束

我正在编写自定义处理程序拦截器以获得多语言URL地址.例如,当用户访问uri时/de/auto,将出现deutsch内容,当用户访问时,/en/car将出现英语内容.我希望两个请求都重定向到同一个控制器和相同的方法:

@Controller
public class MultiLangController {

    @RequestMapping(value="/en/car", method = RequestMethod.GET)
    public @ResponseBody String writePage() {

        return "some content";
    }
Run Code Online (Sandbox Code Playgroud)

我的拦截器是这样实现的(简化版):

public class MultiLangInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request,
    HttpServletResponse response, Object handler) throws Exception {

        String requestUrl = request.getRequestURI().substring(request.getContextPath().length());

        if ("/de/auto".equals(requestUrl)) {
            String redirect = request.getContextPath() + "/en/car";

            response.sendRedirect(redirect);
            return false;
        }
        return true;        
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我/en/car在浏览器中访问url时,返回正确的页面(带有"some content"消息),日志显示请求通过我的拦截器传递.当我访问时/de/auto,返回404错误并根据日志请求没有进入我的拦截器.但为什么?不应该请求通过所有拦截器,直到其中一个拦截器通过返回false来阻止它?

为清楚起见,我没有使用,mvc:annotation-driven因为它隐藏了我的自定义拦截器.我已经定义了所有的手段

<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="interceptors"> …
Run Code Online (Sandbox Code Playgroud)

java url multilingual spring interceptor

1
推荐指数
1
解决办法
6646
查看次数