引言

今天前端同学突然反馈说,线上一个预览图片的功能使用不了,并且甩给我一个浏览器控制台的报错信息

----->>>> net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 问题解决

这可把我惊住,因为这个接口在本地环境、测试环境、UAT环境测试都没问题,线上怎么就有这个问题呢?

1.查看后台具体应用服务的日志

打印日志的方法有几种,这里不在赘述。我打印日志一看,果然后台服务有报错,报错信息如下:

预览大图时报错.png

这个报错一看,应该是io的时候,被异常中断了,查看报错信息定位到具体出错的代码位置,报错代码如下:

# os是OutputStream
os.flush()

果然是io的时候被中断了,读取流异常终止,导致代码出错。

2.造成net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)问题的几种原因

1)

丢包

2)

响应数据被限制

3)

读取流异常终止

3.针对上述原因可以从以下两个方面进行排查

1.网络是否稳定

2.服务器端是否有对响应数据做限制,如nginx转发的数据限制,spring的http响应数据限制等

4.问题解决

1.测试网络是否稳定

服务在线上,这个问题可以pass掉了。

2.查看服务端是否对响应数据做限制

首先我查看nginx的配置文件,因为我们的前端代码是放到nginx里面的,进入服务所在的location里面发现确实少了几个数据限制的配置,我们在location里面加上:

# 修改nginx配置文件
proxy_buffer_size 1024k;
proxy_buffers 16 1024k;
proxy_busy_buffers_size 2048k;
proxy_temp_file_write_size 2048k;

修改完保存之后重启nginx,发现报错的接口正常了,能预览图片。呼~到这里终于能松口气了。

下面给出spring的配置限制:

spring:
  servlet:
    multipart:
      max-file-size: 50MB
      max-request-size: 50MB

这个错误到这里就告一段落了,通过这个问题总结了一个道理,环境保持一致才是硬道理呀

参考文章:(net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 问题解决_err incomplete chunked encoding-CSDN博客)