简述
浏览器调用接口报错 net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
错误描述:编码模块不完整,返回浏览器的流不完整
可能原因:
1、丢包
2、响应数据被限制
3、读取流异常终止
针对可能的原因排查可以从几个方面
1、网络是否稳定
2、服务器端是否有对响应数据做限制,比如:nginx转发的数据限制,spring/Servlet的HTTP响应数据大小限制,或者是自定义拦截器的响应数据限制
3、服务器的数据限制,如Tomcat
针对以上排查,根据查阅的资料,有如下具体方式以及对应的解决办法:
>> nginx转发的数据限制
然后重启nginx
>> tomcat数据限制
然后重启 tomcat
>> spring 配置限制
根据spring boot 版本不同在application文件添加不同的配置
>> spring 加@ResponseBody 引起的流关闭
代码接口上去掉注解@ResponseBody
>> 拦截器
拦截过滤掉一些响应太大的响应
我的
原因:数据导出接口,需要导出量比较大的数据,然后异常,数据小的时候测试通过,数据量变大到一定程度,异常
接口如下:
@ResponseBody public void exportImsirecord(@RequestBody(required = false) WarningBO warningBO, HttpServletResponse response){ OutputStream os = response.getOutputStream(); StringBuffer buf = new StringBuffer(); buf.append(很多数据); os.write(buf.toString().getBytes("utf-8")); }
请求后然后浏览器报错 net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
同时后台也报错:流异常关闭
最后的解决办法是 去掉 @ResponseBody,接口变成
public void exportImsirecord(@RequestBody(required = false) WarningBO warningBO, HttpServletResponse response){ }
两个原因:
1、@ResponseBody 走了数据转换,有数据限制
2、过滤器 响应 ResponseBody 读取有时间限制,解析太久中断流
总结:
本质原因都是响应数据不完整导致,排查针对这个去就行,包括前端后端所有都有可能导致,常见的应该是数据配置限制了
??本文结束,希望有帮到阁下。更多问题可以到我博客来搜索
?【点击搜索】
?【进入博客】
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200223.html原文链接:https://javaforall.net
