Ошибки

ERR_BLOCKED_BY_RESPONSE: что значит и как исправить

ERR_BLOCKED_BY_RESPONSE — сайт ответил, но запретил показывать свою страницу внутри другого сайта или отдавать ему свой файл. Вместо такой страницы Chrome показывает серый прямоугольник.

Обновлено 08.10.2026≈ 13 мин чтения
Содержание 10

Что сделать прямо сейчас

Если вы просто открываете сайт:

  1. Если на месте видео, карты, формы или другой вставки вы видите серый прямоугольник с грустным значком листа бумаги, значит, сайт, с которого взята вставка, запретил показывать свои страницы внутри других сайтов. Ваш браузер и интернет здесь ни при чём.
  2. Если рядом со вставкой есть ссылка на этот материал, откройте её: запрет действует только на показ внутри другого сайта, а напрямую страница открывается.
  3. Если ссылки нет, сообщите владельцу сайта, на котором видите серый прямоугольник, адрес страницы и что на месте вставки ничего не показывается.
  4. Если Chrome вместо всей страницы пишет «Сайт … заблокирован», а ниже стоит код ERR_BLOCKED_BY_RESPONSE, исправить это тоже может только владелец сайта. Сообщите ему адрес страницы и код ошибки.

Если сайт ваш, переходите к разделам «Как проверить» и «Как исправить» ниже: там все команды по шагам.

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

Отвечая браузеру, сервер сначала присылает заголовки — служебные строки об ответе, а потом саму страницу или файл. В заголовках сайт может запретить показывать полученное в определённых местах. ERR_BLOCKED_BY_RESPONSE значит, что Chrome получил ответ с таким запретом и выполнил его. В исходном коде Chrome это ошибка -27.

Запреты бывают двух видов:

  • Запрет показывать страницу в рамке. Один сайт может показать страницу другого сайта внутри своей — в рамке, она называется iframe. Так вставляют на сайты видео, карты и формы. Сайт может запретить показывать свои страницы в рамке на чужих сайтах.
  • Запрет отдавать файл другим сайтам. Картинка, скрипт или другой файл может разрешить загружать себя только страницам своего сайта. Тогда на странице другого сайта Chrome этот файл не загрузит.

Как выглядит в Chrome

Если запрещён показ в рамке, вместо вставленной страницы Chrome показывает серый прямоугольник с грустным значком листа бумаги. Ни текста, ни кода ошибки в нём нет. Остальная страница открывается как обычно.

Причину видно в инструментах разработчика: откройте их клавишей F12 или Ctrl+Shift+I, на Mac Cmd+Option+I, и перейдите на вкладку Console («Консоль»). Если запрет задан заголовком Content-Security-Policy, там будет строка, которая начинается словом Framing: в ней указан адрес страницы, которую не пустили в рамку, и упомянуто правило frame-ancestors. Если запрет задан заголовком X-Frame-Options, в строке будет упомянут этот заголовок.

Если запрещена загрузка файла, страница открывается без него — например, без картинки. В консоли для каждого такого файла будет строка, которая начинается с Failed to load resource: net::ERR_BLOCKED_BY_RESPONSE. После кода через точку указано, какой запрет сработал:

Конец строкиЧто значит
NotSameOriginФайл разрешает загружать себя только страницам с тем же именем сайта
NotSameSiteФайл разрешает загружать себя только страницам на том же домене
NotSameOriginAfterDefaultedToSameOriginByCoepВаша страница требует от файлов с других адресов разрешения, а у этого файла его нет

Если ошибка случилась при открытии целой страницы, Chrome показывает заголовок «Сайт example.com заблокирован» и текст «Сайт example.com не позволяет установить соединение.» Ниже — код ERR_BLOCKED_BY_RESPONSE, кнопок нет. Этот вариант мы знаем по исходному коду Chrome.

Причины

  • Заголовок Content-Security-Policy с правилом frame-ancestors. В правиле перечислены сайты, на которых можно показывать страницу в рамке. Значение 'none' запрещает показ везде, 'self' разрешает только на страницах с тем же именем сайта: страницу с example.com можно показать в рамке на example.com, но не на shop.example.com.
  • Заголовок X-Frame-Options. Старый способ того же запрета. Значение DENY запрещает показ в рамке везде, SAMEORIGIN — разрешает только на страницах с тем же именем сайта. Если в ответе есть и frame-ancestors, и X-Frame-Options, Chrome выполняет frame-ancestors, а X-Frame-Options не учитывает: так записано в стандарте, и так было в нашей проверке.
  • Заголовок Cross-Origin-Resource-Policy у файла. Значение same-origin разрешает загружать файл только страницам с тем же именем сайта, same-site — ещё и страницам на поддоменах того же домена, например shop.example.com для example.com, а cross-origin — страницам любых сайтов.
  • Заголовок Cross-Origin-Embedder-Policy у вашей страницы. Значение require-corp требует, чтобы каждый файл с другого адреса — даже с поддомена вроде shop.example.com — сам разрешал загрузку заголовком Cross-Origin-Resource-Policy. Файлы без такого разрешения Chrome не загружает. Действует этот заголовок только на сайтах с https: в нашей проверке на адресе с http Chrome его не учитывал.

Как проверить

Шаг 1. Посмотрите в консоли, что запрещено

Откройте страницу с ошибкой и инструменты разработчика — F12 или Ctrl+Shift+I, на Mac Cmd+Option+I. Перейдите на вкладку Console («Консоль») и обновите страницу. По строке в консоли определите, какой запрет сработал, — строки описаны в разделе «Как выглядит в Chrome».

Запишите адрес, к которому относится запрет. Для рамки это адрес страницы внутри неё: он указан в коде вашей страницы, в атрибуте src тега iframe, а если запрет задан заголовком Content-Security-Policy — ещё и в строке консоли. Для файла это адрес самого файла: его имя указано справа в строке консоли, а полный адрес — в коде вашей страницы, например в атрибуте src тега img.

Шаг 2. Посмотрите заголовки ответа

Шаг 2 выполните на своём компьютере: на Mac — в программе Терминал, в Windows — в командной строке. Если вы ни разу не открывали терминал, начните с инструкции Как открыть терминал: там всё по шагам. Скопируйте команду целиком, замените в ней https://example.com/stranica/ на адрес, который записали в шаге 1, и нажмите Enter.

curl -sSI https://example.com/stranica/

Команда одинаково работает на Mac и в Windows. Ключ -I просит у сервера только заголовки ответа, без самой страницы, а -sS убирает с экрана всё лишнее, кроме сообщений об ошибках.

Найдите в ответе строки с такими заголовками. curl может показать их имена маленькими буквами:

ЗаголовокЧто запрещает
content-security-policy со словом frame-ancestorsПоказ страницы в рамке на сайтах, которых нет в списке
x-frame-optionsПоказ страницы в рамке: DENY — везде, SAMEORIGIN — на чужих сайтах
cross-origin-resource-policyЗагрузку файла страницами других сайтов

Если в консоли строка заканчивается на NotSameOriginAfterDefaultedToSameOriginByCoep, выполните эту же команду ещё раз с адресом своей страницы. В её заголовках будет строка cross-origin-embedder-policy: require-corp.

Если адрес из шага 1 принадлежит чужому сайту, дальше проверять нечего: переходите к разделу «Если вы вставляете страницу чужого сайта».

Шаг 3. Найдите, где задан заголовок

Команды этого шага выполняются на сервере. Если вы ещё не подключались к нему, начните с инструкции Как подключиться к VPS по SSH.

Сначала поищите заголовок в настройках nginx:

sudo grep -rniE 'frame-ancestors|x-frame|cross-origin-' /etc/nginx

Команда выведет найденные строки, а перед каждой — путь к файлу и номер строки в нём, например /etc/nginx/sites-available/example.com:12. Нужны строки add_header с заголовками из шага 2 или с Cross-Origin-Embedder-Policy: значит, запрет задан в nginx, в этом файле.

Если таких строк нет, заголовок ставит программа сайта. Поищите его в файлах сайта:

sudo grep -rliE 'frame-ancestors|x-frame|cross-origin-(resource|embedder)' /var/www/example.com

Замените /var/www/example.com на папку своего сайта. Команда выведет имена файлов, в которых есть эти слова. Если среди них только файлы из папок wp-admin и wp-includes, это сам WordPress: так он защищает, например, свою страницу входа. Эти файлы не трогайте.

Как исправить

Если вы вставляете страницу чужого сайта

Заголовки чужого сайта вы не поменяете: разрешить показ его страниц в рамке может только его владелец. Если сервис разрешает вставлять свои материалы на другие сайты, он даёт для этого специальный код или адрес — поищите его в справке сервиса или в меню «Поделиться». Если такого кода нет, вместо рамки поставьте обычную ссылку на материал.

Если ваша страница должна показываться в рамке на ваших сайтах

Откройте файл настроек, который нашли в шаге 3, — например, командой sudo nano /etc/nginx/sites-available/example.com. Найдите строку add_header с X-Frame-Options или frame-ancestors и вместо неё напишите такую строку:

add_header Content-Security-Policy "frame-ancestors 'self' https://shop.example.com" always;

После frame-ancestors через пробел перечислены сайты, на которых можно показывать вашу страницу: 'self' — ваш собственный сайт, https://shop.example.com — ещё один сайт. Замените его на адрес своего сайта или перечислите несколько адресов через пробел. Кавычки вокруг self нужны. Слово always в конце строки добавляет заголовок ко всем ответам, в том числе к страницам ошибок, — без него nginx добавляет заголовок только к ответам с кодами вроде 200 и 301.

Ещё три правила:

  • Другие строки с X-Frame-Options можно удалить. Когда в ответе есть frame-ancestors, Chrome X-Frame-Options не учитывает. Значение ALLOW-FROM из старых инструкций не поможет: по стандарту такой заголовок браузер пропускает, как будто его нет, и показ в рамке становится разрешён всем.
  • Не добавляйте второй заголовок Content-Security-Policy. Если в найденных строках уже есть такой заголовок с другими правилами, Chrome выполнит оба, и страница должна пройти каждый. Поправьте в существующей строке только часть со словом frame-ancestors.
  • Следите за блоками location. Если строка стоит в блоке server, а в блоке location ниже есть свои строки add_header, для адресов из этого location nginx возьмёт только их, а строку из server не добавит. Тогда добавьте её и в этот location.

Правило frame-ancestors не работает, если записать его в коде страницы в теге meta: браузер его там пропускает. Его нужно отправлять заголовком.

Сохраните файл — Ctrl+O, Enter, затем Ctrl+X — и проверьте настройки:

sudo nginx -t

В ответе должны быть слова syntax is ok и test is successful. Если вместо них сообщение об ошибке, в нём указаны файл и номер строки: исправьте строку и проверьте снова. Когда проверка прошла, примените настройки:

sudo systemctl reload nginx

Если команда ничего не ответила, настройки применены. Затем повторите шаг 2.

Если ваш файл не загружается на страницах другого сайта

Найдите строку add_header с Cross-Origin-Resource-Policy, которую показал шаг 3, и поменяйте в ней значение:

ЗначениеКто может загружать файл
same-originТолько страницы с тем же именем сайта, например example.com
same-siteЕщё и страницы на поддоменах того же домена, например shop.example.com
cross-originСтраницы любых сайтов

Например, чтобы файлы с example.com загружались на shop.example.com, строка должна быть такой:

add_header Cross-Origin-Resource-Policy same-site always;

Затем проверьте и примените настройки так же, как в предыдущем разделе, и повторите шаг 2.

Если файл с чужого сайта, его заголовок вы не поменяете: разрешить загрузку может только владелец того сайта.

Если ваша страница требует разрешения от всех файлов

Так бывает, когда в консоли строка заканчивается на NotSameOriginAfterDefaultedToSameOriginByCoep. Если файлы лежат на вашем поддомене, добавьте в его настройки строку из предыдущего раздела со значением same-site или cross-origin.

Если файлы с чужих сайтов или вы не знаете, зачем вашей странице заголовок Cross-Origin-Embedder-Policy, спросите об этом разработчика сайта. Если заголовок добавили вы сами, например вместе с другими заголовками безопасности, и сайту он не нужен, удалите строку add_header с ним. Затем проверьте и примените настройки и повторите шаг 2 для адреса своей страницы: строки cross-origin-embedder-policy в ответе быть не должно.

На обычном хостинге

На обычном хостинге такие заголовки задают в файле .htaccess в папке сайта, в настройках плагина или в панели управления хостингом. Откройте .htaccess в файловом менеджере панели хостинга и поищите в нём строки со словами X-Frame-Options, frame-ancestors или Cross-Origin. В .htaccess строка, которая разрешает показ в рамке на ваших сайтах, выглядит так:

Header always set Content-Security-Policy "frame-ancestors 'self' https://shop.example.com"

Если таких строк нет, напишите в поддержку хостинга адрес страницы и код ошибки ERR_BLOCKED_BY_RESPONSE и объясните, на каком сайте страница должна показываться в рамке.

Соседние ошибки

ОшибкаЧем отличается
ERR_BLOCKED_BY_CLIENTЗапрос остановил сам браузер или его расширение, и до сайта он не дошёл
ERR_CONNECTION_REFUSEDТот же текст «…не позволяет установить соединение», но сервер вовсе не принял подключение
403 ForbiddenСервер отказал в доступе к самой странице, а не к показу в рамке

Источники

Проверено в Chrome 155 на локальном тестовом сервере 8 октября 2026 года.

Сверено 8 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 08.10.2026