Spring Cloud Gateway 在路由到 Angular 应用程序时进入无限循环

问题描述 投票:0回答:1

我正在使用 Spring Cloud Gateway 将请求路由到 Angular 应用程序,但遇到了 Spring Cloud Gateway 进入无限循环的问题。日志显示相同的 ui 路由被重复匹配。这会导致 431 错误响应,表明标头太错误。为了调试目的我已经将其设置为 5MB

这是 application.yml 中我的 Spring Cloud Gateway 配置的片段:

spring:
  cloud:
    gateway:
      routes:
        - id: ui
          uri: http://localhost:4200
          predicates:
            - Path=/ui/**

这里是相关日志

2023-10-07T10:14:37.555+02:00 DEBUG 18114 --- [ioEventLoop-5-1] o.s.c.g.h.RoutePredicateHandlerMapping   : Route matched: ui
2023-10-07T10:14:37.555+02:00 DEBUG 18114 --- [ioEventLoop-5-1] o.s.c.g.h.RoutePredicateHandlerMapping   : Mapping [Exchange: GET http://localhost:9000/ui/] to Route{id='ui', uri=http://localhost:4200, order=0, predicate=Paths: [/ui/**], match trailing slash: true, gatewayFilters=[[[DedupeResponseHeader Access-Control-Allow-Credentials Access-Control-Allow-Origin = RETAIN_FIRST], order = 1], [[SaveSession], order = 2]], metadata={}}
...
(repeated ~50 times)

我已经尝试过的事情:

确保 Angular 应用程序和 Spring Cloud Gateway 在不同的端口上运行。 检查自定义过滤器和 Websocket 配置。 使用 server.max-http-header-size 将标头大小限制增加到 5MB。 知道可能导致这些问题的原因以及如何解决这些问题吗?

angular spring api-gateway spring-cloud-gateway
1个回答
0
投票

我注意到您在 Spring Cloud Gateway 中遇到了类似的问题,导致无限循环,并由于标头大小而导致 431 错误响应。我面临同样的问题:io.netty.handler.codec.http.websocketx.WebSocketClientHandshakeException:无效的握手响应 getStatus:431 请求标头字段太大。

您成功解决这个问题了吗?如果是这样,您能分享一下您的解决方案吗?我尝试过增加标头大小限制,但似乎并没有解决问题。

提前致谢!”

© www.soinside.com 2019 - 2024. All rights reserved.