Контент и разметка 2 мин чтения

Смешанный контент (mixed content)

HTTPS-страница подгружает картинки и скрипты по HTTP — браузер ругается или блокирует их молча. Как найти и починить.

Смешанный контент — ситуация, когда сама страница открыта по защищённому протоколу, а ресурсы внутри неё запрашиваются по обычному:

<!-- страница: https://example.ru/ -->
<img src="http://example.ru/img/logo.png">
<script src="http://cdn.example.com/script.js"></script>

Соединение считается защищённым лишь настолько, насколько защищена его слабейшая часть. Скрипт, полученный по HTTP, можно подменить по дороге — и он получит полный доступ к странице.

Как ведёт себя браузер

Активный контент — скрипты, стили, iframe, шрифты, запросы к API — блокируется полностью. Без предупреждений для посетителя: просто не работает меню, не отправляется форма, разъезжается вёрстка. В консоли при этом будет Mixed Content: The page at ... was loaded over HTTPS, but requested an insecure resource.

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

Самое неприятное здесь — что владелец сайта проблему часто не видит: у него страница закэширована, а у нового посетителя половина функций мертва.

Откуда берётся

  • Переезд на HTTPS без замены адресов в базе и шаблонах — главная причина.
  • Абсолютные адреса в контенте: редактор вставил картинку с полным http://-адресом.
  • Сторонние сервисы — старые виджеты, счётчики, карты, чаты, подключённые по HTTP.
  • Жёстко прописанные адреса в коде темы или плагина.

Как найти

  • Пункт аудита «Смешанный контент» показывает найденные http-ресурсы списком.
  • В браузере: F12Console. Все заблокированные и небезопасные запросы там перечислены с адресами.
  • В базе данных (для CMS) поиск по http://ваш-домен.

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

1. Замените адреса в базе. Для WordPress подойдёт инструмент Better Search Replace или WP-CLI:

wp search-replace 'http://example.ru' 'https://example.ru' --skip-columns=guid

Обязательно сделайте резервную копию до замены.

2. Поправьте шаблоны и код. Ищите http:// в файлах темы, в подключениях скриптов и стилей.

3. Используйте относительные адреса для своих ресурсов — тогда протокол берётся от страницы:

<img src="/img/logo.png">

4. Сторонние сервисы — на HTTPS. Почти все давно поддерживают его; достаточно поменять протокол в коде вставки. Сервис, который до сих пор работает только по HTTP, стоит заменить: это признак заброшенности.

5. Страховочная директива — на время, пока чините вручную:

Content-Security-Policy: upgrade-insecure-requests

Браузер сам подставит https:// вместо http:// в запросах. Это костыль, а не решение: если ресурс по HTTPS недоступен, он просто не загрузится. Но он спасает старый контент, который правится долго (про CSP).

После исправления

Проверьте не только главную: смешанный контент обычно живёт в старых статьях и карточках товаров, куда картинки вставляли вручную.

А что с этим на вашем сайте?

Аудит «Кверху» проверяет этот пункт вместе с остальными пятьюдесятью и показывает конкретику: какие страницы затронуты и что именно исправить. Первая полная проверка проекта — бесплатно.

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