如何从 @RestController 响应中删除 Transfer-Encoding: chunking?

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

我正在编写一个公开 REST JSON API 的 Spring Boot 应用程序;但是,一些较旧的客户端无法解析 JSON 响应,因为这些数字出现在响应正文的开头和结尾:

经过大量的搜索和测试,我得出的结论是这些数字是由

Transfer-Encoding: chunking
引起的。

我尝试手动设置 Transfer-Encoding 标头,但它只是被忽略。

提出的解决方案相当混乱,因为它需要修改所有控制器方法,因此,我想知道是否有人有更直接的解决方案。

java spring spring-boot tomcat
1个回答
0
投票

我找到了更好的解决方案:根据这个响应,可以注册一个

ShallowEtagHeaderFilter
来计算响应的
Content-Length
,有效消除分块。

    @Bean
    public FilterRegistrationBean<?> registerFilters()
    {
        FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>();
        registration.setFilter(new ShallowEtagHeaderFilter());
        registration.addUrlPatterns("/api/*");
        return registration;
    }
© www.soinside.com 2019 - 2024. All rights reserved.