Не работает Вебвизор на сайте с «1С-Битрикс: Веб-окружением»

Почему Вебвизор Яндекс Метрики не показывает записи на сайте с bitrix-env: заголовок X-Frame-Options, защита от фреймов в Битриксе и как разрешить фреймы только Метрике.

Почему не работает

Вебвизор воспроизводит записи, открывая ваш сайт во фрейме на сайте Метрики. А «1С-Битрикс: Веб-окружение» по умолчанию запрещает показывать сайт во фреймах — это защита от кликджекинга, когда сайт подкладывают под чужую страницу, чтобы украсть клики, логины или данные карт. Запрет передаётся заголовком X-Frame-Options.

Значения заголовка

  • DENY — запретить показ во фреймах везде;
  • SAMEORIGIN — разрешить только на своём же сайте;
  • ALLOW-FROM домен — устаревшее значение, современные браузеры его не поддерживают.

Шаг 1. Защита от фреймов в Битриксе

В админке: Настройки → Проактивная защита → Защита от фреймов. Либо отключите её, либо добавьте сайт Метрики в исключения. Сканер безопасности после отключения покажет предупреждение — это ожидаемо, защиту мы перенесём в nginx.

Шаг 2. Разрешаем фреймы только Метрике в nginx

Закомментируйте общий заголовок в /etc/nginx/bx/conf/general-add_header.conf:

#add_header X-Frame-Options SAMEORIGIN;

И добавьте в конец /etc/nginx/bx/conf/bitrix_general.conf:

set $frame_options 'SAMEORIGIN';
if ($http_referer ~ '^https?://([^/]+\.)?(site\.ru|webvisor\.com|metrika\.yandex\.ru|metrica\.yandex\.com)/') {
    set $frame_options '';
}
add_header X-Frame-Options $frame_options;

Замените site\.ru на свой домен. Для запросов из Метрики заголовок не отправляется, для всех остальных остаётся запрет.

nginx -t && systemctl restart nginx

Современная альтернатива

Вместо X-Frame-Options можно использовать заголовок Content-Security-Policy, который понимает список разрешённых сайтов без условий в nginx:

add_header Content-Security-Policy "frame-ancestors 'self' https://*.webvisor.com https://metrika.yandex.ru https://metrica.yandex.com" always;

Если используете CSP, уберите X-Frame-Options, чтобы два заголовка не противоречили друг другу.

Все статьи

Расскажите о задаче — подберём платформу и оценим работу

Обсудить проект