我正在使用 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。 知道可能导致这些问题的原因以及如何解决这些问题吗?
我注意到您在 Spring Cloud Gateway 中遇到了类似的问题,导致无限循环,并由于标头大小而导致 431 错误响应。我面临同样的问题:io.netty.handler.codec.http.websocketx.WebSocketClientHandshakeException:无效的握手响应 getStatus:431 请求标头字段太大。
您成功解决这个问题了吗?如果是这样,您能分享一下您的解决方案吗?我尝试过增加标头大小限制,但似乎并没有解决问题。
提前致谢!”