Chrome net :: ERR_INCOMPLETE_CHUNKED_ENCODING ошибка

В течение последних двух месяцев я получал следующую ошибку на консоли разработчика Chrome:

net::ERR_INCOMPLETE_CHUNKED_ENCODING

Симптомы:

  • Страницы не загружаются.
  • Усеченные файлы CSS и JS.
  • Страницы висят.

Серверная среда:

  • Apache 2.2.22
  • PHP
  • Ubuntu

Это происходит со мной на нашем собственном сервере Apache. Это не происходит ни с кем другим, т.е. Никто из наших пользователей не сталкивается с этой проблемой, как и никто другой в нашей команде разработчиков.

Другие люди получают доступ к тому же серверу с точно такой же версией Chrome. Я также попытался отключить все расширения и просмотр в режиме инкогнито — безрезультатно.

Я использовал Firefox, и происходит то же самое. Усеченные файлы и еще много чего. Единственное, что Firefox не вызывает никаких ошибок консоли, поэтому вам нужно проверить HTTP-запрос через Firebug, чтобы увидеть проблему.

Заголовки ответа от Apache:

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:close
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Mon, 27 Apr 2015 10:52:52 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
Server:Apache/2.2.22 (Ubuntu)
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.10-1ubuntu3.8

Во время тестирования я смог решить проблему, применив HTTP 1.0 в моем файле htaccess:

SetEnv downgrade-1.0

Это избавляет от проблемы. Однако принудительное использование HTTP 1.0 вместо HTTP 1.1 не является правильным решением.

ОбновитьПоскольку я являюсь единственным, кто столкнулся с этой проблемой, я решил, что мне нужно потратить больше времени на выяснение того, было ли это проблемой на стороне клиента. Если я захожу в настройки Chrome и использую опцию «Восстановить по умолчанию», проблема исчезнет минут 10-20. Тогда это возвращается.

96

Решение

ХОРОШО. Я трижды проверил это, и я Уверен на 100% что это вызвано моим антивирусом (ESET NOD32 ANTIVIRUS 5).

Всякий раз, когда я отключаю защиту в реальном времени, проблема исчезает. Сегодня я отключил защиту в реальном времени на 6-7 часов, и проблема никогда не возникала.

Несколько мгновений назад я снова включил его, только чтобы проблема всплыла в течение минуты.

В течение последних 24 часов я включал и выключал защиту в реальном времени, чтобы быть уверенным. Каждый раз — результат был одинаковым.

Обновление: я столкнулся с другим разработчиком, у которого была точно такая же проблема с защитой в реальном времени на его антивирусе Касперского. Он отключил это, и проблема ушла. Т.е. эта проблема, похоже, не ограничивается ESET.

64

Другие решения

Ошибка пытается сказать, что Chrome был отключен во время отправки страницы. Ваша проблема пытается выяснить, почему.

По-видимому, это может быть известной проблемой, затрагивающей несколько версий Chrome. Насколько я могу судить, проблема заключается в том, что эти версии очень чувствительны к длине контента отправляемого чанка и выраженному размеру этого чанка (я мог бы быть далек от этого). Короче говоря, немного несовершенные проблемы заголовков.

С другой стороны, может случиться так, что сервер не отправит терминалу порцию 0 длины. Что может быть исправлено с ob_flush();, Также возможно, что Chrome (или соединение или что-то) работает медленно, поэтому, когда соединение закрыто, страница еще не загружена. Я понятия не имею, почему это может произойти.

Вот параноидальный ответ программистов:

<?php
// ... your code
flush();
ob_flush();
sleep(2);
exit(0);
?>

В вашем случае это может быть случай истечения срока действия скрипта. Я не совсем уверен, почему это должно повлиять только на вас, но это может быть сделано в кучу условий гонки? Это полное предположение. Вы должны быть в состоянии проверить это, увеличив время выполнения скрипта.

<?php
// ... your while code
set_time_limit(30);
// ... more while code
?>

Это также может быть так просто, как вам нужно обновить установку Chrome (поскольку эта проблема специфична для Chrome).

ОБНОВИТЬ: Я смог повторить эту ошибку (наконец-то), когда была выдана фатальная ошибка, когда PHP (на том же локальном хосте) был выходная буферизация. Я предполагаю, что вывод был слишком плохо искажен, чтобы быть полезным (заголовки, но мало или нет контента).

В частности, мой код рекурсивно вызывал себя случайно, пока PHP, по праву, не сдался. Таким образом, сервер не отправил порцию терминала длиной 0 — что было проблемой, которую я идентифицировал ранее.

33

У меня была эта проблема. Отследил это после того, как попробовал большинство других ответов на этот вопрос. Это было вызвано владельцем и разрешениями /var/lib/nginx и более конкретно /var/lib/nginx/tmp каталог неверен.

Каталог tmp используется fast-cgi для кэширования ответов по мере их генерирования, но только если они превышают определенный размер. Таким образом, проблема является периодической и возникает только тогда, когда сгенерированный ответ является большим.

Проверить nginx <host_name>.error_log чтобы увидеть, есть ли у вас проблемы с разрешениями.

Чтобы исправить, убедитесь, что владелец и группа /var/lib/nginx и все подкаталоги — это nginx.

26

Следующее должно исправить это для каждого клиента.

//Gather output (if it is not already in a variable, use ob_start() and ob_get_clean() )

// Before sending output:
header('Content-length: ' . strlen($output));

Но в моем случае было лучше и исправил следующее:

.Htaccess:

php_value opcache.enable 0
15

О боже, у меня была такая же проблема 5 минут назад. Я потратил несколько часов, чтобы найти решение. На первый взгляд отключение антивируса решило проблему на Windows. Но затем я заметил проблему на другом компьютере с Linux без антивируса. Нет ошибок в логах nginx. мой uwsgi показал что-то про «Разбитую трубу» но не на все запросы.
Знаешь что? На устройстве не осталось места, которое я обнаружил при перезапуске сервера в журнале базы данных, и df одобрил это. Единственное объяснение того, почему антивирус был решен, заключается в том, что он предотвращает кэширование браузера (он должен проверять каждый запрос), но браузер с некоторым странным поведением может просто игнорировать неверный ответ и отображать кэшированные ответы.

6

Это известная проблема Chrome. По мнению Chrome и Chromium, для этого нет универсального решения. Эта проблема не связана с типом и версией сервера, она прямо в Chrome.

настройка Content-Encoding заголовок к identity решил эту проблему для меня.

от developer.mozilla.org

личность | Указывает тождественную функцию (то есть ни сжатие, ни
модификация).

Итак, я могу предположить, что в некоторых случаях Chrome не может правильно выполнить сжатие gzip.

4

В моем случае у меня было /usr/local/var/run/nginx/fastcgi_temp/3/07/0000000073" failed (13: Permission denied) что, вероятно, привело к ошибке Chrome net :: ERR_INCOMPLETE_CHUNKED_ENCODING.

Я должен был удалить /usr/local/var/run/nginx/ и пусть nginx создаст его снова.

$ sudo rm -rf /usr/local/var/run/nginx/
$ sudo nginx -s stop
$ sudo mkdir /usr/local/var/run/nginx/
$ sudo chown nobody:nobody /usr/local/var/run/nginx/
$ sudo nginx
3

Здесь проблема была в моем Avast AV.
Как только я отключил его, проблема исчезла.

Но я действительно хотел бы понять причину такого поведения.

2
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector