ERR_INVALID_CHUNKED_ENCODING ошибки или завитка: (18) передачи закрыта с выдающимися чтением данных оставшейся ошибкой решения

ERR_INVALID_CHUNKED_ENCODING 错误

скручиваемость: (18) передачи закрыта сохраняющиеся чтение данных 错误

Не удалось загрузить данные ответа 错误

окончательное решение

Симптомы:

Передняя ошибка консоли: ERR_INVALID_CHUNKED_ENCODING процесс ошибки

 

Режим отладки в ответ на переднем конце заготовки можно увидеть, шоу: Не удалось загрузить данные отклика

 

заголовок запрос ответа содержит Transfer-Encoding: фрагментированный, и возвращается к нормальным 200

Войти, чтобы просмотреть сервер журнала возвращает правильные данные.

Что? ? ? ?

Возврат к нормальному фоновым, фронтальное дисплей 200 состояния, но это ошибка, где данные?

On! Где данные? Описание фоновое для интерфейсных данных, данные будут потеряны.

Зачем терять его, напечатав response.getBufferSize (), получить 8192 байт, что составляет около ок

Поскольку интерфейс вернулся больше данных, чем 8k, что явно не достаточно, все настройки response.setBufferSize (1024000), установлен быть больше, чем 1 м кэша.

Здесь проблема решена.

Продолжайте анализировать:

Проблема Причина:

Благодаря использованию Transfer-Encoding: фрагментированные вместо Content-Length ,

-Длина Контента : HTTP длина передачи сообщений используется для описания сущности, клиент (сервер) может быть определено, были ли получены данные, браузер создает соответствующий размер страницы буфера на основе размера данных отклика на основе этого значения.

Transfer-Encoding:chunk模式传输 数据。即服务器一边产生数据,一边发给客户端,服务器就需要使用”Transfer-Encoding: chunked”这样的方式来代替Content-Length。由于这种模式浏览器不知道服务器相应数据的大小,并且服务器默认配置的缓存大小是:8k,所以如果超过这个响应数据的大小,浏览器就会有这种错误。

问题解决3种方式(后三种可以尝试,第一种亲测成功):

1、Nginx的目录权限:

            当输出代理文件大小超过配置proxy_temp_file_write_size时候,nginx会将文件写入到临时目录下。如果没有权限,chrom就会直接failed而不输出东西。

解决方法:

chown -R www:www /var/lib/nginx

其中www替换为自己实际项目中配置的ngxin运行用户,即root用户。

这个问题回顾是安装nginx的时候,直接yum install。在配置web的时候,忘了改/var/lib/nginx的目录权限(默认是nobody)。默认是nginx:nginx的组权限,平时不用这个账号启动。所以在碰到输出较大的body的时候,就触发了这个et::ERR_INCOMPLETE_CHUNKED_ENCODING错误。

(可以参考:https://blog.csdn.net/qq_35624642/article/details/79104353

2、更改Nginx的配置

加大Nginx的buffer可以临时解决这个问题。如以下Nginx配置:
http{
................................
    proxy_buffer_size 128k;
    proxy_buffers   32 128k;
    proxy_busy_buffers_size 128k;
    .............................
}

3、处理报错的响应接口(局部处理,只是解决这一个接口)在Controller层方法上注明response。

@PostMapping("/test")
public R<String> test(HttpServletResponse response, @RequestBody IDDTO id) {
   response.setBufferSize(1024000);//设置缓存大小约1M即可,默认是8192byte,也就是8k
}

4、配置tomcat的属性(全局处理,应用所有的接口)(参考:https://blog.csdn.net/lowkeysk/article/details/8286485)

微服务配置:

server:

      max-http-header-size: 1024000   // HTTP请求、响应头信息的最大大小

配置tomcat配置属性 maxHttpHeaderSize=1024000

 

   
 

рекомендация

отblog.csdn.net/m0_37668842/article/details/89138733