ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH: что значит и как исправить
ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH — сервер указал в ответе две разные длины страницы, и Chrome не стал выбирать, какой из них верить. Исправить это может только владелец сайта.
Содержание 10
Что сделать прямо сейчас
Если вы просто открываете сайт:
- Нажмите кнопку «Перезагрузить» на странице ошибки.
- Если ошибка повторяется, исправить её может только владелец сайта. Сообщите ему адрес страницы и код ошибки ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH.
Если сайт ваш, переходите к разделам «Как проверить» и «Как исправить» ниже: там все команды по шагам.
Что значит ошибка
Вместе со страницей сервер присылает заголовки — служебные строки о ней. В строке Content-Length указана длина страницы в байтах: по ней браузер понимает, где страница заканчивается.
Если таких строк две и числа в них разные, непонятно, где кончается страница. По правилам HTTP такой ответ нужно отбросить, и Chrome его не принимает: показывает ошибку ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH. В исходном коде Chrome это ошибка -346.
Две строки с одинаковым числом Chrome принимает: в нашей проверке такая страница открылась без ошибки.
Как выглядит в Chrome
Заголовок — «Страница недоступна», под ним — «Сайт example.com отправил недействительный ответ.» Ниже — код ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH и кнопка «Перезагрузить».
Такой же текст Chrome показывает и при ошибке ERR_INVALID_HTTP_RESPONSE — различаются они только кодом.
Причины
- Программа сайта ставит заголовок дважды. Например, код задаёт Content-Length сам, а библиотека или сервер, через которые он отдаёт страницу, может добавить ещё одну строку. Числа расходятся, если код посчитал длину неверно: Content-Length — это длина в байтах, а русская буква в кодировке UTF-8 занимает два байта.
- Вторую строку добавляет nginx. Если в настройках есть строка add_header Content-Length, nginx не заменяет ею свою строку с длиной, а добавляет ещё одну.
Если программа сайта работает за nginx версии 1.23.0 или новее, её ответ с двумя строками Content-Length до посетителя не дойдёт. nginx не пропускает такой ответ, даже когда числа одинаковые: посетитель увидит ошибку 502 Bad Gateway, а в журнале ошибок nginx появится строка со словами upstream sent duplicate header line.
Как проверить
Шаг 1 выполните на своём компьютере: на Mac — в программе Терминал, в Windows — в командной строке. Если вы ни разу не открывали терминал, начните с инструкции Как открыть терминал: там всё по шагам. Скопируйте команду целиком, замените example.com на адрес своего сайта и нажмите Enter.
Шаг 1. Посмотрите заголовки ответа
На Mac:
curl -sS -D - -o /dev/null https://example.com/В Windows:
curl -sS -D - -o NUL https://example.com/Ключ -D - выводит на экран заголовки ответа, а -o /dev/null (в Windows — -o NUL) не сохраняет саму страницу. Если ошибка появляется не на главной, укажите в команде полный адрес нужной страницы.
Найдите строки Content-Length — curl может написать их маленькими буквами: content-length. Если таких строк две и числа в них разные, это и есть причина ошибки. Сам curl такой ответ принимает без сообщения об ошибке, поэтому смотрите именно на заголовки.
Шаг 2. Спросите программу сайта напрямую
Этот и следующий шаги выполняются на сервере. Если вы ещё не подключались к нему, начните с инструкции Как подключиться к VPS по SSH.
Если сайт работает через nginx, узнайте порт, на котором работает программа сайта:
sudo nginx -T 2>/dev/null | grep proxy_passВ ответе будет строка вида proxy_pass http://127.0.0.1:3000; — число после двоеточия и есть порт. Если команда ничего не вывела, программа подключена к nginx иначе — например, PHP через fastcgi_pass, — тогда переходите к шагу 3.
Запросите страницу у программы напрямую, минуя nginx, — замените 3000 на свой порт:
curl -sS -D - -o /dev/null http://127.0.0.1:3000/Если и здесь две строки Content-Length, их отдаёт сама программа сайта. Если строка одна, вторую добавляет nginx — переходите к шагу 3.
Шаг 3. Поищите заголовок в настройках nginx
sudo nginx -T 2>/dev/null | grep -iE 'configuration file|content-length'Команда покажет пути к файлам настроек — строки configuration file — и строки, где упоминается Content-Length. Если среди них есть add_header Content-Length, это и есть вторая строка. Она записана в файле из ближайшей строки configuration file над ней.
Если вместо этой ошибки посетители видят 502 Bad Gateway, проверьте журнал ошибок nginx:
sudo grep 'duplicate header line' /var/log/nginx/error.logСтроки со словами upstream sent duplicate header line значат, что программа сайта прислала nginx какой-то заголовок дважды. Название заголовка указано в той же строке, в кавычках. Версию nginx покажет команда nginx -v.
Как исправить
В программе сайта
Оставьте только одно место, где задаётся Content-Length. Проще всего не задавать его в коде вовсе: длину посчитает библиотека или сервер, через которые программа отдаёт страницу. Если длину нужно указать вручную, считайте её в байтах, а не в символах.
После правки перезапустите программу и повторите шаг 1: строка Content-Length должна остаться одна.
В настройках nginx
Откройте файл, который вы нашли на шаге 3, — например, командой sudo nano /etc/nginx/sites-available/example.com. Удалите строку add_header Content-Length: длину ответа nginx указывает сам.
Сохраните файл — Ctrl+O, Enter, затем Ctrl+X — и проверьте настройки:
sudo nginx -tВ ответе должны быть слова syntax is ok и test is successful. Если вместо них сообщение об ошибке, в нём указаны файл и номер строки: исправьте строку и проверьте снова. Когда проверка прошла, примените настройки:
sudo systemctl reload nginxЕсли команда ничего не ответила, настройки применены. Затем повторите шаг 1.
На обычном хостинге
Если вы сами задавали заголовок Content-Length — в файле .htaccess или в коде сайта, — уберите его. Если не задавали, напишите в поддержку хостинга адрес страницы и код ошибки ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH.
Соседние ошибки
| Ошибка | Чем отличается |
|---|---|
| ERR_INVALID_HTTP_RESPONSE | Тот же текст на странице ошибки, но сервер ответил не по протоколу HTTP |
| ERR_CONTENT_LENGTH_MISMATCH | Строка Content-Length одна, но данных пришло меньше, чем в ней указано |
| 502 Bad Gateway | Так отвечает nginx 1.23.0 и новее, если программа сайта прислала ему Content-Length дважды |
Источники
- Исходный код Chromium: net_error_list.h — ошибка -346; localized_error.cc — что Chrome пишет на странице ошибки.
- RFC 9112, раздел 6.3 — как определяется длина ответа и что делать с неверным Content-Length.
- RFC 9110, раздел 8.6 — заголовок Content-Length.
- Документация curl — ключи -D и -o.
- Исходный код nginx: ngx_http_upstream.c — проверка повторного Content-Length в ответе программы, есть в nginx с версии 1.23.0; ngx_http_headers_filter_module.c — как работает add_header.
Проверено в Chrome 155 на локальном тестовом сервере 8 октября 2026 года.
Сверено 8 октября 2026 года.
Что почитать дальше
- 502 Bad Gateway — что делать, если nginx не получил от программы сайта правильный ответ.
- ERR_CONTENT_LENGTH_MISMATCH — что делать, если страница загружается не целиком.
- «Не удается получить доступ к сайту» — коды ошибок Chrome и что они значат.
Проверено и обновлено: 08.10.2026