我正在编写一个公开 REST JSON API 的 Spring Boot 应用程序;但是,一些较旧的客户端无法解析 JSON 响应,因为这些数字出现在响应正文的开头和结尾:
经过大量的搜索和测试,我得出的结论是这些数字是由
Transfer-Encoding: chunking
引起的。
我尝试手动设置 Transfer-Encoding 标头,但它只是被忽略。
提出的解决方案相当混乱,因为它需要修改所有控制器方法,因此,我想知道是否有人有更直接的解决方案。
我找到了更好的解决方案:根据这个响应,可以注册一个
ShallowEtagHeaderFilter
来计算响应的Content-Length
,有效消除分块。
@Bean
public FilterRegistrationBean<?> registerFilters()
{
FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>();
registration.setFilter(new ShallowEtagHeaderFilter());
registration.addUrlPatterns("/api/*");
return registration;
}