如何使用 Netty 增加 Spring WebFlux 中的请求标头大小?

How to increase request header size in Spring WebFlux with Netty?

提问人:Pawan Patil 提问时间:11/1/2023 最后编辑:Anish B.Pawan Patil 更新时间:11/2/2023 访问量:98

问:

有没有办法在带有嵌入式 Netty 服务器的 Spring WebFlux 中为请求配置最大 http 请求标头大小

我收到以下异常。

io.netty.handler.codec.http2.Http2Exception$HeaderListSizeException: 标头大小超出了允许的最大大小 (8192)

我试图使用这个属性,但它没有用。server.max-http-header-size

java spring-boot spring-webflux netty

评论

0赞 Anish B. 11/1/2023
你必须把这样的东西server.max-http-header-size=10KB
0赞 Pawan Patil 11/1/2023
尝试过但没有运气
0赞 gdomo 11/1/2023
我们是在谈论服务器方法处理程序还是通过 WebClient 调用另一个服务?
0赞 Pawan Patil 11/1/2023
因此,当我从前端在请求标头中发送 jwt 令牌时,我从前端调用我的 api,然后在后端出现此异常:标头大小超出了允许的最大大小 (8192)

答:

0赞 Pawan Patil 11/2/2023 #1

我按照 Spring Cloud 和 Spring Boot 提供的兼容性矩阵,将 Spring Boot 版本从 2.3.12.RELEASE 升级到 2.7.0,将 Spring Cloud 版本从 Hoxton.SR9 升级到 2021.0.3,解决了这个问题。

此外,我还实现了 WebServerFactoryCustomizer 接口和重写的自定义方法,我在其中编写了逻辑以增加标头大小。这是我用来实现此目的的代码片段

@Component
public class CustomizeNetty implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {
    @Override
    public void customize(NettyReactiveWebServerFactory factory) {
        factory.addServerCustomizers(httpServer -> httpServer.http2Settings(builder -> builder.maxHeaderListSize(65536)));
    }
}