Skip to content
EN

ERR_BLOCKED_BY_RESPONSE: какой заголовок заблокировал и как починить

Коротко:

net::ERR_BLOCKED_BY_RESPONSE — ошибка Chromium -27. В исходниках она определена как запрос, который «не выполнен, потому что ответ пришёл с требованиями, которые не соблюдены (например, проверки предков X-Frame-Options и Content-Security-Policy, а также Cross-Origin-Resource-Policy)» (net_error_list.h). На практике чаще всего срабатывает первое — страница отказывается открываться в <iframe>, — а вовсе не семейство cross-origin isolation. К TLS ошибка отношения не имеет и доступ по HTTPS не блокирует: ответ пришёл по рабочему соединению и был отклонён уже после этого.

Ниже: как понять, какое именно требование сработало, и что делать в каждом случае.

Проверить безопасность сайта →

Какое требование сработало

Одной и той же сетевой ошибкой оборачиваются четыре разных механизма. Различить их можно по сообщению в консоли DevTools — прочитайте его прежде, чем менять заголовки.

Кто заблокировалВ консоли естьЧинится на
X-Frame-Options«Refused to display … in a frame because it set X-Frame-Options»Встраиваемом сайте — убрать заголовок или перейти на CSP
CSP frame-ancestors«Refused to frame … because an ancestor violates … frame-ancestors»Встраиваемом сайте — добавить ваш источник в директиву
Cross-Origin-Resource-Policyзапись про CORP на вкладке Issues рядом с запросомСервере ресурса — выставить cross-origin
Cross-Origin-Embedder-Policyвстраивающая страница отдаёт require-corpКаждом подресурсе — подтвердить согласие через CORP

Два из них починить со своей стороны нельзя: X-Frame-Options и frame-ancestors выставляет тот сайт, который вы пытаетесь встроить, и это его осознанный отказ. Клиентского флага, который их обходит, не существует. Посмотрите, что цель отдаёт на самом деле, проверкой HTTP-заголовков, прежде чем считать, что дело в вашей конфигурации.

Причины ошибки

  • Страница с Cross-Origin-Embedder-Policy: require-corp встраивает ресурс без CORP
  • COOP: same-origin + popup.open() на другой origin
  • X-Frame-Options: DENY при попытке iframe-встраивания
  • CORP: same-site + доступ с другого eTLD+1
  • Broken CORS preflight с 200 но без Access-Control-Allow-Origin

Пошаговое исправление

  1. На встраиваемом ресурсе: Cross-Origin-Resource-Policy: cross-origin
  2. Если вы владелец обеих сторон: CORP: same-site
  3. Для iframes: Cross-Origin-Opener-Policy: unsafe-none (ослабляет)
  4. Проверьте HTTP-чекер Enterno — увидите все response headers
  5. Для SharedArrayBuffer: COOP + COEP оба на same-origin + require-corp

Проверить безопасность сайта →

Смежные сетевые ошибки

Что такое ERR_BLOCKED_BY_RESPONSE и как с ним справиться

Ошибка ERR_BLOCKED_BY_RESPONSE возникает, когда ответ сервера блокируется политиками безопасности, такими как Cross-Origin Embedder Policy (COEP) или Cross-Origin Resource Policy (CORP). Это может произойти, если ресурсы, загружаемые с других доменов, не соответствуют заданным политикам, что препятствует их отображению. Чтобы устранить эту ошибку, убедитесь, что все загружаемые ресурсы имеют соответствующие заголовки, такие как Cross-Origin-Embedder-Policy: require-corp или Cross-Origin-Resource-Policy: same-origin.

Понимание COEP и CORP

Cross-Origin Embedder Policy (COEP) и Cross-Origin Resource Policy (CORP) — это механизмы безопасности, которые помогают защитить веб-приложения от атак, связанных с межсайтовыми запросами. COEP требует, чтобы все ресурсы, загружаемые с другого домена, имели соответствующие заголовки, подтверждающие их безопасность. Это позволяет браузеру избежать загрузки потенциально небезопасных ресурсов, что, в свою очередь, защищает пользователей от атак, таких как Cross-Site Scripting (XSS).

С другой стороны, CORP определяет, как ресурсы могут быть загружены с других доменов. Если ресурс не имеет соответствующих заголовков, браузер блокирует его загрузку, что может привести к возникновению ошибки ERR_BLOCKED_BY_RESPONSE. Например, если ваш сайт загружает изображение с другого домена, и этот домен не предоставляет заголовок Cross-Origin-Resource-Policy: same-origin, изображение будет заблокировано.

Практический пример: настройка заголовков для устранения ERR_BLOCKED_BY_RESPONSE

Для устранения ошибки ERR_BLOCKED_BY_RESPONSE необходимо правильно настроить заголовки COEP и CORP на сервере. Рассмотрим пример настройки для веб-сервера Apache. Включите следующие строки в конфигурацию вашего веб-сервера:

Header set Cross-Origin-Embedder-Policy require-corp
Header set Cross-Origin-Resource-Policy same-origin

Эти команды добавят соответствующие заголовки к ответам сервера. Убедитесь, что вы перезапустили сервер после внесения изменений. Для проверки заголовков используйте команду curl -I https://ваш-домен.com. В ответе должны появиться ваши новые заголовки:

HTTP/1.1 200 OK
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Resource-Policy: same-origin

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

ЗаголовкиCSP, HSTS, X-Frame-Options и др.
SSL/TLSШифрование и сертификат
КонфигурацияСерверные настройки и утечки
Оценка A-FОбщий балл безопасности

Почему нам доверяют

OWASP
рекомендации
15+
заголовков безопасности
<2с
результат
A–F
оценка безопасности

Как это работает

1

Введите URL сайта

2

Анализ заголовков безопасности

3

Получите оценку A–F

Что проверяет анализ безопасности?

Инструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.

Анализ заголовков

Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.

Проверка SSL

Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.

Обнаружение утечек

Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.

Отчёт с рекомендациями

Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.

Кому это нужно

Специалисты по безопасности

аудит HTTP-заголовков

DevOps

проверка конфигурации

Разработчики

CSP и HSTS настройка

Аудиторы

соответствие стандартам

Частые ошибки

Нет Content-Security-PolicyCSP — главная защита от XSS. Без него инъекция скриптов значительно проще.
Нет заголовка HSTSБез HSTS возможна downgrade-атака с HTTPS на HTTP. Включите Strict-Transport-Security.
Server header раскрывает версиюServer: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.
X-Frame-Options не установленСайт можно встроить в iframe для clickjacking-атаки. Установите DENY или SAMEORIGIN.
Нет X-Content-Type-OptionsБез nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).

Лучшие практики

Начните с базовых заголовковМинимум: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Займёт 5 минут.
Внедрите CSP постепенноНачните с Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.
Скройте серверные заголовкиУдалите Server, X-Powered-By, X-AspNet-Version из ответов.
Настройте Permissions-PolicyОграничьте доступ к камере, микрофону, геолокации — только то, что реально используется.
Проверяйте после каждого деплояЗаголовки безопасности могут быть перезаписаны при обновлении конфигурации сервера.

Получите больше с бесплатным аккаунтом

История security-проверок и мониторинг HTTP-заголовков безопасности.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

Что такое Cross-Origin Isolation?

Режим, в котором страница защищена от Spectre-атак. Требуется для SharedArrayBuffer, performance.measureUserAgentSpecificMemory и высокоточных таймеров.

Когда я вижу эту ошибку?

DevTools → Console → "Failed to load resource: net::ERR_BLOCKED_BY_RESPONSE". В Network тaб resource помечен красным.

Spectre-mitigations — это про безопасность?

Да. Без COOP/COEP страница не может безопасно использовать SharedArrayBuffer — отсюда ограничения Chrome.

Как удобно тестировать?

Enterno CORS checker проверит Access-Control-* headers. + DevTools → Network → Response Headers.

Ошибка появляется при встраивании чужого сайта в iframe. Как её обойти?

Никак. X-Frame-Options и CSP frame-ancestors — это отказ целевого сайта встраиваться, который браузер исполняет по его указанию. Реальные пути только такие: договориться, чтобы ваш источник разрешили, использовать их API или oEmbed, либо проксировать на сервере с их разрешения.

Это проблема SSL? Она блокирует HTTPS?

Нет. Ошибка Chromium -27 принимается уже после того, как ответ пришёл по рабочему соединению, — TLS в её пути нет. Запрос отклонён потому, что не выполнено требование, пришедшее вместе с этим ответом.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.