Смешанный контент: почему в браузере пропал замок
Сайт работает по HTTPS, сертификат в порядке, а замок в адресной строке всё равно пропал или перечёркнут. Обычно виноват смешанный контент — когда защищённая страница подтягивает файлы по обычному HTTP.
Что это такое
Страница, открытая по HTTPS, должна загружать всё своё содержимое тоже по HTTPS: картинки, стили, скрипты, шрифты, встроенные видео. Если хотя бы один адрес начинается с http://, соединение перестаёт быть полностью защищённым: этот файл идёт по открытому каналу и может быть подменён по дороге.
Браузер такое замечает и реагирует по-разному в зависимости от того, насколько опасен ресурс.
Пассивный смешанный контент — картинки, видео, аудио. Подменённая картинка неприятна, но не даёт злоумышленнику управлять страницей. Браузер обычно загружает такой файл, но убирает значок защищённого соединения.
Активный смешанный контент — скрипты, стили, шрифты, содержимое фреймов. Подменённый скрипт может переписать страницу целиком, увести данные из формы оплаты или подставить чужие реквизиты. Такие ресурсы современные браузеры блокируют полностью, и это выглядит как поломка вёрстки или неработающие кнопки.
Смешанный контент часто живёт на внутренних страницах, а не на главной. Владелец проверяет главную, видит замок и успокаивается — а карточка товара со старой картинкой из статьи пятилетней давности показывает посетителю предупреждение. Проверять нужно по одному представителю каждого шаблона.
Откуда берётся
| Источник | Как проявляется |
|---|---|
| Старые статьи и карточки | Картинки с абсолютными адресами http://, вставленные до перехода сайта на HTTPS |
| Сторонние виджеты | Карты, чаты, счётчики и плееры, подключённые по старой инструкции |
| Шрифты и библиотеки | Подключение с чужого сервера по http — шрифт не загрузился, вёрстка поехала |
| Настройки движка | В настройках CMS основной адрес сайта остался с http — движок сам генерирует такие ссылки |
| Письма и рассылки | Картинки в шаблонах писем, которые ведут на http-версию сайта |
Как найти
Самый быстрый способ — консоль браузера. Откройте инструменты разработчика клавишей F12, перейдите на вкладку «Консоль» и обновите страницу: браузер прямо напишет, какие именно ресурсы загружены небезопасно или заблокированы, с полными адресами.
Для сайта целиком поможет краулер: он обойдёт страницы и соберёт все ссылки на ресурсы, среди которых легко отфильтровать начинающиеся с http. А если движок хранит контент в базе, ищите прямо там — по строке с http и вашим доменом.
Как починить
Массовая замена в базе. Основной приём: заменить http://вашдомен на https://вашдомен во всём контенте. Обязательно со свежей резервной копией — операция затрагивает тысячи записей.
Относительные адреса вместо абсолютных. Для своих же файлов лучше писать путь без домена и протокола: тогда ресурс всегда загрузится по тому же протоколу, что и страница, и проблема не вернётся после следующего переезда.
Заголовок upgrade-insecure-requests. Он говорит браузеру подставлять https вместо http автоматически. Это рабочее временное решение, но не замена уборке: если чужой ресурс по https недоступен, он просто не загрузится.
Чужие ресурсы, доступные только по http. Единственный правильный путь — отказаться от них или найти замену. Проксировать чужой небезопасный ресурс через свой сервер можно, но вы берёте на себя ответственность за его содержимое.
Смешанный контент возвращается после каждой правки контента, поэтому разовой чистки мало. Пруфен следит за состоянием сертификата, а проверка контента помогает убедиться, что на ключевой странице остались нужные блоки — например, работающая кнопка оплаты, которая ломается как раз при блокировке активного смешанного контента. Уведомления приходят на Email, в Telegram, в Макс или звонком.
Частые вопросы
Влияет ли смешанный контент на позиции? Прямого штрафа нет, но косвенный эффект ощутимый: пропавший замок и предупреждение браузера снижают доверие и увеличивают отказы, а заблокированные скрипты ломают функциональность страницы. Поисковики учитывают и то и другое через поведение посетителей.
У меня замок есть, но серый, а не зелёный — это проблема? Нет. Современные браузеры давно отказались от зелёного цвета и показывают нейтральный значок для всех защищённых соединений. Тревожиться нужно, если значок перечёркнут или заменён предупреждением.
Можно ли просто включить принудительный редирект на HTTPS? Он нужен обязательно, но решает другую задачу — переводит посетителя на защищённую версию страницы. Ресурсы внутри страницы редирект не исправляет: они по-прежнему запрашиваются по адресам, прописанным в коде.
Почему на телефоне сайт выглядит нормально, а на компьютере ломается? Браузеры применяют правила по-разному и по-разному кэшируют ресурсы. Если один браузер уже загрузил заблокированный файл раньше, он может показать страницу целой. Проверять надо в режиме инкогнито и в нескольких браузерах.