Перейти к содержимому
SEO/Опубликовано 20 октября 2026 г./5 мин

ERR_HTTP_RESPONSE_CODE_FAILURE: сервер ответил ошибкой без текста

ERR_HTTP_RESPONSE_CODE_FAILURE — сервер вернул код 4xx или 5xx с пустой страницей, и Chrome показал свой экран «HTTP ERROR». Проверили на стенде Chromium 149 все коды от 400 до 599, пустое тело и тело из одного пробела, PHP под Apache и Firefox.

ERR_HTTP_RESPONSE_CODE_FAILURE: сервер ответил ошибкой без текста
N
Команда NEXFORCE
Кто пишет блог

ERR_HTTP_RESPONSE_CODE_FAILURE значит, что сервер ответил кодом ошибки — от 400 до 599 — и не прислал ни одного байта в теле ответа. Показывать посетителю нечего, поэтому Chrome выводит свой экран: «Страница недоступна», «Страница не найдена» или «Доступ запрещен», а под текстом строку «HTTP ERROR 500», «HTTP ERROR 404» и т. п. Сам код ERR_HTTP_RESPONSE_CODE_FAILURE на экране не пишется: его видно в консоли, в DevTools и в средствах автоматизации. Мы проверили на стенде Chromium 149 все коды от 400 до 599, разные варианты пустого ответа, PHP под Apache и Firefox.

Как определить причину за минуту

Что на экранеЧто случилосьКто исправляет
HTTP ERROR 500, 502, 503сервер или скрипт упал и не вернул страницувладелец сайта
HTTP ERROR 504сервер не дождался ответа от следующего звенавладелец сайта
HTTP ERROR 404, 410страницы нет, а своей страницы 404 сервер не отдалвладелец сайта; посетителю — проверить адрес
HTTP ERROR 403, 401доступа нет, страница с объяснением не отданавладелец сайта или вход по паролю
HTTP ERROR 429слишком много запросовподождать и обновить

Если код из этого списка, ошибка на стороне сайта. Посетителю имеет смысл обновить страницу через пару минут, проверить адрес и, если не помогло, написать владельцу.

Что означает ошибка

В исходниках Chromium, в файле net_error_list.h, у ошибки код −379 и описание «The server returned a non-2xx HTTP response code» — сервер вернул код ответа не из группы 2xx. Там же оговорка: используется она только там, где браузер сам разбирает код ответа.

Когда именно её выдаёт обычная загрузка страницы, видно в файле http_error_navigation_throttle.cc. Условия такие:

  1. загружается сам документ вкладки, а не фрейм внутри неё;
  2. код ответа 400 или больше, и у браузера есть для него своя страница ошибки — в Chrome это любой код от 400 до 599 (localized_error.cc);
  3. тело ответа пустое — ноль байт.

Если все три условия выполнены, браузер отменяет загрузку с кодом ERR_HTTP_RESPONSE_CODE_FAILURE и показывает свою страницу ошибки. Если в теле есть хотя бы один байт, загрузка продолжается и посетитель видит то, что прислал сервер. Автоматическую перезагрузку, которую Chrome делает при сетевых ошибках, для этой ошибки код отключает (net_error_auto_reloader.cc): сервер ответил, и повтор сам по себе не поможет.

Стенд: какие коды дают ошибку

Мы подняли свой сервер на Node.js, который отдаёт любой код с пустым телом, и открыли адреса в Chromium 149 с русским интерфейсом.

Код, пустое телоЭкран Chromium 149
400, 401, 405, 418, 429, 451, 499, 599«Страница недоступна. Если проблема не исчезнет, свяжитесь с владельцем сайта»
403«Доступ к … запрещен. У вас нет прав для просмотра этой страницы»
404«Страница … не найдена. Не найдена страница для веб-адреса …»
410«Страница … не найдена. Возможно, он был перемещен или удален», без кнопки «Перезагрузить»
500, 502, 503«Страница недоступна. Сайт … пока не может обработать этот запрос»
504«Страница недоступна. Превышено время ожидания ответа от сайта …»
600, 999пустая белая страница, ошибки нет
200пустая белая страница
204загрузка отменена, остаётся прежняя страница

Во всех строках, кроме трёх последних, под текстом стоит «HTTP ERROR» и код, а Playwright получает net::ERR_HTTP_RESPONSE_CODE_FAILURE.

Стенд: что считается пустым ответом

ОтветРезультат
404, Content-Length: 0ERR_HTTP_RESPONSE_CODE_FAILURE
404, chunked без данныхERR_HTTP_RESPONSE_CODE_FAILURE
404 без длины, соединение закрытоERR_HTTP_RESPONSE_CODE_FAILURE
404, тело — один пробелбелая страница, ошибки нет
404, тело — перевод строкибелая страница, ошибки нет
404, тело «Not found»текст «Not found»
iframe с пустой 404пустой фрейм, экрана ошибки нет
fetch к пустой 404ответ со статусом 404, ok = false, без исключения
отправка формы, ответ 500 без телаэкран «HTTP ERROR 500»

Из этого следуют три вывода:

  • Важен способ отдачи только в одном смысле: есть ли хоть один байт. Content-Length, chunked и закрытие соединения дают одинаковый результат.
  • Один пробел меняет экран. Сервер, который на ошибку отдаёт пробел или перевод строки, показывает посетителю белый лист вместо понятного сообщения. Это хуже: на белом листе нет ни кода, ни кнопки.
  • Ошибка только у документа вкладки. Пустая 404 во фрейме или в запросе скрипта не вызывает экран: фрейм остаётся пустым, а скрипт получает обычный ответ с кодом 404.

Стенд: PHP и Firefox

Самый частый реальный источник пустого ответа — PHP. Мы взяли образ с PHP 8.3.33 и Apache 2.4.68 и вызвали несуществующую функцию.

Серверdisplay_errorsОтветChromium 149
Apache + mod_phpOff500, 0 байтHTTP ERROR 500
встроенный сервер PHPOff500, 0 байтHTTP ERROR 500
встроенный сервер PHPOn200, текст «Fatal error…»текст ошибки на странице
http_response_code(404) без вывода—404, 0 байтHTTP ERROR 404

На боевом сервере вывод ошибок обычно выключен, и посетитель видит не текст ошибки, а экран HTTP ERROR 500. При включённом выводе код ответа остаётся 200 — для робота такая страница выглядит рабочей.

Firefox 151 на пустые ответы показывает свой экран «Looks like there's a problem with this site» и строку «The server at … sent back an error: 404 Not Found». В Playwright он возвращает NS_ERROR_NET_EMPTY_RESPONSE для 403 и 404 и NS_ERROR_NET_ERROR_RESPONSE для 500.

Почему возникает ERR_HTTP_RESPONSE_CODE_FAILURE

  • Скрипт упал с фатальной ошибкой при выключенном выводе ошибок — так PHP на стенде отдал 500 без тела. Другие языки и фреймворки при падении ведут себя по-разному, многие отдают свою страницу 500.
  • Код ответа задан, а страница не выведена. Например, http_response_code(404) и выход из скрипта, res.status(404).end() в Express, return с кодом без шаблона в любом фреймворке.
  • Прокси или балансировщик вернул ошибку без страницы — 502, 503, 504, когда приложение за ним недоступно или отвечает слишком долго.
  • Защита от ботов или ограничение частоты отдаёт 403 или 429 без текста.
  • Своя страница ошибки не настроена или сама падает при выводе.

Как исправить ошибку посетителю

  1. Обновите страницу через пару минут. Коды 502, 503, 504 и 429 часто временные.
  2. Проверьте адрес, если на экране 404 или 410: опечатка, лишний символ, устаревшая ссылка.
  3. Откройте главную сайта. Если она работает, сломан один адрес; если нет — весь сайт.
  4. Войдите в аккаунт, если на экране 401 или 403 и раздел требует входа.
  5. Напишите владельцу сайта, если ошибка держится: приложите адрес, время и код с экрана.

Очистка кэша, смена DNS и отключение расширений здесь почти никогда не помогают: сервер уже ответил, ответ просто пустой.

Как исправить ошибку владельцу сайта

  1. Найдите исходную ошибку в журнале. Для 500 — журнал ошибок PHP или приложения, для 502 и 504 — журнал прокси (nginx, Apache) и состояние приложения за ним. Подробно по кодам — в статьях про ошибку 500, 502 и 503.
  2. Проверьте ответ вручную: curl -i адрес. Если в выводе код 4xx или 5xx и Content-Length: 0 либо пустое тело, — это ваш случай.
  3. Настройте страницы ошибок. В nginx — error_page, в Apache — ErrorDocument, во фреймворке — шаблон для 404 и 500. Страница должна отдаваться с тем же кодом ошибки, а не с 200.
  4. Не отдавайте пробел вместо страницы. Тело из пробела убирает экран HTTP ERROR, но посетитель видит белый лист.
  5. Не включайте вывод ошибок на боевом сайте, чтобы «увидеть текст». Посетитель получит код 200 и куски кода, а поисковик — рабочую страницу с мусором. Смотрите ошибки в журнале.
Проверить свой

Проверьте, какой код и какой ответ получает поисковик на вашей странице. Движок разбирает одну страницу: код ответа, метатеги, заголовки, canonical, robots.txt. Без регистрации.

Влияет ли ошибка на SEO

Роботы Яндекса и Google не видят экран браузера. Для них важен код ответа: пустая 404 для робота такая же 404, как оформленная, и страница выпадет из индекса одинаково. Проблема в другом — за пустым ответом часто стоит сломанный скрипт:

  • 5xx на важных страницах — робот снижает частоту обхода, а если ошибка держится, страницы уходят из индекса;
  • 200 с текстом ошибки при включённом выводе — робот считает адрес рабочим и может проиндексировать текст «Fatal error»;
  • 200 с пустой страницей — Google может посчитать её мягкой 404.

Как проверить коды на сайте целиком, разобрано в статье как проверить страницу 404.

Чем ERR_HTTP_RESPONSE_CODE_FAILURE отличается от похожих ошибок

ОшибкаЧто пришло от сервера
ERR_HTTP_RESPONSE_CODE_FAILUREзаголовки с кодом 4xx или 5xx, тела нет
ERR_EMPTY_RESPONSEвообще ничего, даже заголовков
ERR_CONNECTION_RESETсоединение оборвано
ERR_TOO_MANY_REDIRECTSбесконечные перенаправления
HTTP ERROR с текстом сайтакод ошибки и страница сайта — это не ошибка браузера

Границы замера

  • Chromium 149 и Firefox 151 на Linux, сборки из Playwright. Chrome на Windows и Яндекс Браузер мы не проверяли; Firefox — с английским интерфейсом.
  • Ответы отдавал наш сервер по HTTP/1.1 на локальном адресе. Поведение по HTTP/2 и через CDN мы здесь не проверяли.
  • PHP проверяли в одном образе с настройками по умолчанию. Ваш хостинг может выводить ошибки иначе.

Источники

  • Chromium: net/base/net_error_list.h — github.com/chromium
  • Chromium: content/browser/renderer_host/http_error_navigation_throttle.cc — github.com/chromium
  • Chromium: components/error_page/common/localized_error.cc, components/error_page/content/browser/net_error_auto_reloader.cc — github.com/chromium
  • RFC 9110 «HTTP Semantics», раздел 15 — rfc-editor.org
  • Google Search Central: «How HTTP status codes, and network and DNS errors affect Google Search» — developers.google.com

Похожие ошибки

  • Ошибка 500 — внутренняя ошибка сервера.
  • Ошибка 418 — шуточный код, который на пустом ответе даёт тот же экран HTTP ERROR.
  • ERR_EMPTY_RESPONSE — сервер закрыл соединение, ничего не ответив.

Коротко

  • ERR_HTTP_RESPONSE_CODE_FAILURE — сервер ответил кодом 400–599 и пустым телом; Chrome показывает свой экран с «HTTP ERROR» и кодом.
  • Ошибка на стороне сайта; посетителю — обновить позже, проверить адрес, написать владельцу.
  • Один байт в теле убирает экран: пробел даёт белый лист, текст — текст.
  • Частый источник — упавший PHP с выключенным выводом ошибок: 500 и пустой ответ.
  • Роботы смотрят на код, а не на экран; лечить нужно причину 5xx и отдавать страницы ошибок с правильным кодом.
Вопросы и ответы

FAQ по теме

Что означает ERR_HTTP_RESPONSE_CODE_FAILURE?+
Сервер ответил кодом ошибки от 400 до 599 и не прислал ни одного байта страницы. Показывать нечего, поэтому Chrome выводит свой экран: «Страница недоступна» и строку «HTTP ERROR 500», «HTTP ERROR 404» или другой код.
Это ошибка браузера или сайта?+
Сайта. Браузер только сообщает, что сервер ответил ошибкой и пустой страницей. Посетителю остаётся обновить страницу позже или написать владельцу сайта.
Почему в браузере HTTP ERROR 500, а не страница сайта?+
Чаще всего так выглядит упавший PHP-скрипт: при выключенном выводе ошибок PHP отдаёт код 500 и пустой ответ. На нашем стенде PHP 8.3 под Apache 2.4 сделал именно так. Причину ищите в журнале ошибок PHP или веб-сервера.
Влияет ли ошибка на SEO?+
Роботы поисковиков смотрят на код ответа, а не на экран браузера. Пустая 404 для них такая же 404, как оформленная. Но частые 5xx замедляют обход и могут привести к выпадению страниц из индекса.
Как владельцу сайта убрать этот экран?+
Отдавать вместе с кодом ошибки хотя бы короткую страницу. На стенде Chromium показал экран HTTP ERROR только при полностью пустом ответе: тело даже из одного пробела браузер отобразил как обычную страницу.
Читайте также

Связанные материалы

SEO

ERR_EMPTY_RESPONSE: сервер ничего не прислал

ERR_EMPTY_RESPONSE — сервер принял запрос и закрыл соединение, не прислав ни байта. Проверили на стенде девять вариантов «пустого» ответа в Chromium и nginx и выяснили, чем эта ошибка отличается от 502 и сброса соединения.

SEO

Ошибка 418: «я чайник»

Код 418 «I'm a teapot» пришёл из первоапрельского RFC 2324 про кофейники и в стандарте HTTP значится как «не используется». Проверили на стенде nginx, Apache, PHP, Node.js, Python, Chromium 149 и Firefox 151, что каждый делает с этим кодом.

SEO

Ошибка 500 на сайте: что проверить до звонка разработчику

Ошибка 500 на сайте: откуда берётся, что проверить самому до звонка разработчику и что видит поисковый робот. Сломали PHP и nginx двенадцатью способами: при включённом выводе ошибок семь из двенадцати отдают не 500, а 200 с текстом ошибки.

SEO

Страница 404: как проверить свою и почему «открывается» — плохой ответ

В обходе 259 сайтов Екатеринбурга запросили несуществующий адрес. Честную 404 отдают 227, код 200 на пустом месте — 14, и у восьми из них там лежит копия главной. А у 67 честных 404 на странице меньше двухсот знаков текста.