ERR_CONTENT_DECODING_FAILED: что значит и как исправить
ERR_CONTENT_DECODING_FAILED — сайт сообщил браузеру, что страница сжата, а распаковать её не получилось. Вместо страницы Chrome показывает пустой экран, а код ошибки виден в консоли разработчика.
Содержание 10
Что сделать прямо сейчас
Если вы просто открываете сайт:
- Обновите страницу: F5, на Mac — Cmd+R.
- Если страница так и остаётся пустой, исправить это может только владелец сайта. Сообщите ему адрес страницы и код ошибки ERR_CONTENT_DECODING_FAILED.
Если сайт ваш, переходите к разделам «Как проверить» и «Как исправить» ниже: там все команды по шагам.
Что значит ошибка
Чтобы страницы загружались быстрее, сервер может сжимать их — примерно как архиватор сжимает файлы. Способ сжатия, например gzip, сервер указывает в заголовке ответа Content-Encoding, а браузер по нему распаковывает страницу перед показом.
Если в заголовке написано, что ответ сжат, а внутри лежат несжатые данные или данные, сжатые другим способом, браузер не может их распаковать. Тогда Chrome сообщает об ошибке ERR_CONTENT_DECODING_FAILED. В исходном коде Chrome это ошибка -330.
Как выглядит в Chrome
В нашей проверке Chrome показал пустую белую страницу — без текста и без кнопок. Код ошибки виден только в инструментах разработчика: откройте их клавишей F12 или Ctrl+Shift+I, на Mac Cmd+Option+I, и перейдите на вкладку Console («Консоль»). Там будет строка Failed to load resource: net::ERR_CONTENT_DECODING_FAILED.
Ту же строку консоль покажет, если не распаковалась картинка, скрипт или стиль на странице.
Если Chrome всё же показывает для этого кода страницу ошибки, она общая: заголовок «Не удается получить доступ к сайту» и код ERR_CONTENT_DECODING_FAILED. Отдельного текста для этой ошибки в Chrome нет.
Причины
Ответ объявлен сжатым, но его никто не сжимал. Сам по себе заголовок Content-Encoding ответ не сжимает — он только сообщает браузеру, что ответ сжат. Такой заголовок мог попасть в ответ из трёх мест:
- Настройки nginx. Строка add_header Content-Encoding добавляет заголовок к ответу, но сжимать его не умеет.
- Файл .htaccess на хостинге с Apache. Строка Header set Content-Encoding работает так же.
- Код сайта. Программа ставит заголовок сама, например в PHP вызовом header('Content-Encoding: gzip'), а отдаёт несжатые данные.
Как проверить
Шаг 1 выполните на своём компьютере: на Mac — в программе Терминал, в Windows — в командной строке. Если вы ни разу не открывали терминал, начните с инструкции Как открыть терминал: там всё по шагам. Скопируйте команду целиком, замените example.com на адрес своего сайта и нажмите Enter.
Шаг 1. Попросите сжатую страницу командой curl
На Mac:
curl -sS --compressed -D - -o /dev/null https://example.com/В Windows:
curl -sS --compressed -D - -o NUL https://example.com/Ключ --compressed просит у сайта сжатый ответ и распаковывает его, как это делает браузер. -D - выводит на экран заголовки ответа, а -o /dev/null (в Windows — -o NUL) не сохраняет саму страницу.
В заголовках найдите строку content-encoding: в ней указан способ сжатия, например gzip. Если после заголовков curl пишет такую строку:
curl: (61) Error while processing content unencoding: incorrect header check— сайт объявил сжатие, но отдал данные, которые так не распаковываются. Это та же поломка, из-за которой Chrome показывает ERR_CONTENT_DECODING_FAILED. Текст после номера может быть другим — важен сам номер 61: это ошибка распаковки ответа.
Без ключа --compressed curl страницу не распаковывает и этой ошибки не покажет. Если ошибки нет и с ключом, повторите проверку с полным адресом той страницы, на которой Chrome показывает пустой экран.
Шаг 2. Поищите заголовок в настройках nginx
Эту команду выполните на сервере. Если вы ещё не подключались к нему, начните с инструкции Как подключиться к VPS по SSH.
sudo nginx -T 2>/dev/null | grep -iE 'configuration file|content-encoding'Команда просмотрит все настройки nginx и покажет пути к файлам настроек — строки configuration file — и строки, где упоминается Content-Encoding. Если в ответе есть строка add_header Content-Encoding, это и есть причина. Она записана в файле из ближайшей строки configuration file над ней. Если такой строки нет, вручную в nginx этот заголовок не задан — переходите к шагу 3.
Шаг 3. Поищите заголовок в файлах сайта
sudo grep -rni 'content-encoding' /var/www/example.comЗамените /var/www/example.com на папку своего сайта. Команда покажет файлы и номера строк, где упоминается Content-Encoding. Если строк много, начните с файлов .htaccess и с кода, который писали вы или ваш разработчик. Строки из файлов самого WordPress — в папках wp-admin и wp-includes — пропустите.
Как исправить
Уберите заголовок из настроек nginx
Откройте файл, который вы нашли на шаге 2, — например, командой sudo nano /etc/nginx/sites-available/example.com. Найдите строку add_header Content-Encoding и удалите её.
Если вы хотели, чтобы nginx сжимал ответы, вместо неё нужна такая строка в блоке server:
gzip on;С ней nginx сам сжимает ответы — страницы HTML всегда, другие типы файлов по списку в настройке gzip_types — и сам ставит заголовок Content-Encoding.
Сохраните файл — Ctrl+O, Enter, затем Ctrl+X — и проверьте настройки:
sudo nginx -tВ ответе должны быть слова syntax is ok и test is successful. Если вместо них сообщение об ошибке, в нём указаны файл и номер строки: исправьте строку и проверьте снова. Когда проверка прошла, примените настройки:
sudo systemctl reload nginxЕсли команда ничего не ответила, настройки применены. Затем повторите шаг 1: ошибки 61 быть не должно.
Уберите заголовок из кода сайта
Если заголовок ставит программа сайта, удалите строку, которая его задаёт, и оставьте сжатие nginx. Если программа должна сжимать ответ сама, проверьте, что заголовок ставится только вместе со сжатием. В файле .htaccess удалите строку Header set Content-Encoding.
Включённое в nginx сжатие такую ошибку не исправит: ответ, в котором уже есть заголовок Content-Encoding, nginx повторно не сжимает.
На обычном хостинге
Если вы сами добавляли заголовок Content-Encoding — в файле .htaccess или в коде сайта, — уберите его. Если не добавляли, напишите в поддержку хостинга адрес страницы и код ошибки ERR_CONTENT_DECODING_FAILED.
Соседние ошибки
| Ошибка | Чем отличается |
|---|---|
| ERR_CONTENT_LENGTH_MISMATCH | Страница пришла не целиком: сервер обещал больше данных, чем прислал |
| ERR_INCOMPLETE_CHUNKED_ENCODING | Оборвалась страница, которую сервер отправлял частями |
| ERR_EMPTY_RESPONSE | Сервер закрыл соединение, ничего не ответив |
Источники
- Исходный код Chromium: net_error_list.h — ошибка -330.
- RFC 9110, раздел 8.4 — заголовок Content-Encoding.
- Документация curl — ключ --compressed.
- Документация nginx: gzip и add_header.
- Исходный код nginx: ngx_http_gzip_filter_module.c — nginx сам ставит заголовок Content-Encoding, когда сжимает ответ, и не сжимает ответ, в котором этот заголовок уже есть.
Проверено в Chrome 155 на локальном тестовом сервере 8 октября 2026 года.
Сверено 8 октября 2026 года.
Что почитать дальше
- ERR_CONTENT_LENGTH_MISMATCH — что делать, если страница загружается не целиком.
- Как разместить сайт на VPS — настройка nginx по шагам.
- «Не удается получить доступ к сайту» — коды ошибок Chrome и что они значат.
Проверено и обновлено: 08.10.2026