ERR_BLOCKED_BY_RESPONSE: что значит и как исправить
ERR_BLOCKED_BY_RESPONSE — сайт ответил, но запретил показывать свою страницу внутри другого сайта или отдавать ему свой файл. Вместо такой страницы Chrome показывает серый прямоугольник.
Содержание 10
Что сделать прямо сейчас
Если вы просто открываете сайт:
- Если на месте видео, карты, формы или другой вставки вы видите серый прямоугольник с грустным значком листа бумаги, значит, сайт, с которого взята вставка, запретил показывать свои страницы внутри других сайтов. Ваш браузер и интернет здесь ни при чём.
- Если рядом со вставкой есть ссылка на этот материал, откройте её: запрет действует только на показ внутри другого сайта, а напрямую страница открывается.
- Если ссылки нет, сообщите владельцу сайта, на котором видите серый прямоугольник, адрес страницы и что на месте вставки ничего не показывается.
- Если 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 | Сервер отказал в доступе к самой странице, а не к показу в рамке |
Источники
- Исходный код Chromium: net_error_list.h — ошибка -27; localized_error.cc — что Chrome пишет на странице ошибки.
- Стандарт CSP: frame-ancestors — как перечислить сайты, на которых можно показывать страницу в рамке, почему правило не работает в теге meta и как действуют несколько заголовков сразу.
- Стандарт HTML: X-Frame-Options — значения DENY и SAMEORIGIN, почему при frame-ancestors заголовок не учитывается и что бывает с ALLOW-FROM.
- Стандарт Fetch: Cross-Origin-Resource-Policy — значения same-origin, same-site и cross-origin.
- Стандарт HTML: Cross-Origin-Embedder-Policy — значение require-corp и то, что заголовок действует только на защищённых страницах.
- Документация nginx: add_header — параметр always и когда строки add_header не наследуются.
- Документация Apache: Header — как задать заголовок в .htaccess.
- Документация curl — ключи -I и -sS.
- Исходный код WordPress: functions.php и default-filters.php — WordPress запрещает показ страницы входа в рамке на других сайтах.
Проверено в Chrome 155 на локальном тестовом сервере 8 октября 2026 года.
Сверено 8 октября 2026 года.
Что почитать дальше
- ERR_BLOCKED_BY_CLIENT — что делать, если запрос остановил браузер или его расширение.
- Как разместить сайт на VPS — где лежат настройки nginx для сайта.
- «Не удается получить доступ к сайту» — коды ошибок Chrome и что они значат.
Проверено и обновлено: 08.10.2026