【发布时间】:2024-01-07 03:21:01
【问题描述】:
我有一个 Tomcat 7 , Spring 4.2 'RestController' REST API 实现,它似乎为返回 JSON 响应的少数 API 调用产生了 'ERR_INVALID_CHUNKED_ENCODING'。
创建ResponseEntity 的代码相同。但是对于少数 API 调用,"Content-Length" 设置正确,而其他调用 "Transfer-Encoding" 设置为 Chunked。
private CacheControl cacheControl = CacheControl.noStore().mustRevalidate();
protected <T> ResponseEntity<TNRestResponse<T>> createEntity(TNRestResponse<T> res) {
return ResponseEntity.ok().cacheControl(cacheControl).body(res);
}
奇怪的部分是创建ERR_INVALID_CHUNKED_ENCODING 的同一 API 调用的响应似乎在另一个环境中工作正常。唯一的区别是客户端和服务在有问题的场景中运行在同一台服务器上。
已经尝试过的解决方案是手动设置Content-Length,这似乎会导致客户端上的文件过早结束。JSON 长度仅为 468 个字符左右,但客户端仅接收 409 个字符,即使服务器日志显示已发送完整响应并关闭连接。
我们对这个问题的解决方案非常迷茫,因为它是相同的代码在不同的环境中表现得很奇怪。我试图检查两个 tomcat 上 server.xml 中的压缩设置。但一切看起来都很好。
还在 IE 和 chrome 中禁用了代理设置。
任何有用的输入或见解真的很好吗?提前致谢。
【问题讨论】:
-
这个错误发生在客户端还是服务器端?如果可能,还发布任何异常详细信息
-
@TarunLalwani 客户端发生错误。错误是“'ERR_INVALID_CHUNKED_ENCODING' 在工具 > 开发人员工具中。这些服务器日志上绝对没有错误。
-
那么网络标签呢?你在那边看到什么?请在您的问题中发布相同的屏幕截图
-
请参考这个线程*.com/a/37749537/2453985和*.com/a/31453228/2453985他们似乎已经找到了解决方案,还请注意,您永远不应该更改操作系统级别设置或浏览器设置来解决这些类型的问题,因为它们在现实中不起作用。希望您能在我提供的链接中找到解决方案。
标签: java spring rest transfer-encoding