Что такое Mixed Content
Смешанный контент (Mixed Content) – ошибка, возникающая, когда при открытии страницы по HTTPS часть контента загружается по небезопасному протоколу. Подобные страницы считаются потенциально небезопасными, поскольку ресурсы, отправленные без шифрования, могут быть просмотрены и/или изменены злоумышленниками.
Во избежание подмены контента современные браузеры либо автоматически изменяют протокол с HTTP на HTTPS, где это возможно, либо блокируют небезопасную часть запросов, что может приводить к некорректно отображающимся страницам сайта. Тогда разработчик в консоли может видеть надпись “This request has been blocked”. Mixed Content также отражается в разных браузерах по-разному – например, Google Chrome пишет, что подключение защищено не полностью, а Internet Explorer отображает только часть сайта, загруженную по HTTPS.
Как определить Mixed Content на сайте
Определить наличие Mixed Content на сайте можно по следующим признакам:
- В некоторых браузерах будет отображаться иконка частично небезопасного соединения:
- В инструментах разработчика (Ctrl+Shift+I) в разделе «Консоль» будут наблюдаться ошибки Mixed Content:
В сообщении об ошибке будет указано, к какому ресурсу происходило обращение по HTTP, а также действие браузера. Браузер либо переотправит запрос с протоколом HTTPS, либо из-за Mixed Content соединение будет заблокировано.
Как исправить ошибку Mixed Content
Обратите внимание!
Перед внесением изменений на сайт настоятельно рекомендуем сохранить резервную копию сайта. Так вы сможете откатить изменения, если работа сайта будет нарушена. Процесс подробно описан в руководстве по панели управления.
WordPress
Для исправления Mixed Content нужно поменять протокол на HTTPS с HTTP, скорректировав ссылки в БД сайта с помощью утилиты WordPress. Подключитесь к серверу по SSH или используйте веб-терминал. Перейдите в директорию вашего сайта командой cd:
Выполните замену ссылок командой wp. Для сайта на домене example.com команда будет выглядеть следующим образом:
Если на сайте используется плагин Elementor, рекомендуется также скорректировать его ссылки:
После чего очистите кэш командой:
И проверьте работу сайта.
Bitrix
Для корректной работы сайта на Bitrix необходимо:
- Скорректировать пути в ссылках вида http://_ваш_сайт/bitrix/admin/*** с абсолютных на относительные – для этого уберите из ссылок упоминание протокола и домена, приведя их к виду /bitrix/admin/***. Для поиска подобных ссылок можно воспользоваться инструментом поиска в менеджере файлов Битрикса:
- Скорректировать ссылки на медиаконтент, изменив HTTP на HTTPS в кастомизированных компонентах, если они есть. Если подобные ссылки присутствуют в сторонних модулях, рекомендуем обратиться в поддержку модуля.
- Если в коде сайта подключаются сторонние скрипты, например, счетчики или виджеты, ссылки на них также необходимо скорректировать с абсолютных на относительные.
Joomla
В первую очередь необходимо убедиться, что сайт корректно настроен на работу по протоколу HTTPS. Для этого авторизуйтесь в панели администрирования сайта, затем нажмите «Система» – «Общие настройки». Проверьте, что во вкладке «Сервер» в меню «Включить SSL» указано «Весь сайт».
Также убедитесь, что для сайта включена переадресация на HTTPS – включить ее можно либо в разделе «Сайты» в панели управления, либо с помощью следующего правила в файле .htaccess:
Обратите внимание!
При включении переадресации через .htaccess нужные настройки будут работать только для динамических данных.
Если вы используете такие компоненты, как VirtueMart, вам может потребоваться также включить работу по HTTPS в настройках самого модуля. Для VirtueMart это можно сделать в разделе «Компоненты» – «VirtueMart» – «Настройки» – «Магазин», включив опцию «Включить SSL для важных частей сайта».
Также вы можете добавить следующее правило в файл .htaccess:
Это правило устанавливает заголовок, сообщающий браузерам о необходимости изменения протокола запроса с HTTP на HTTPS. Mixed Content всё еще наблюдается? Тогда скорректируйте ссылки, вызывающие ошибку, вручную. Увидеть элементы, загружаемые по HTTP, вы можете в консоли браузера.
OpenCart
В первую очередь нужно убедиться, что сайт корректно настроен на работу по протоколу HTTPS. Для корректной работы OpenCart по HTTPS нужно проверить и при необходимости отредактировать конфигурационные файлы сайта config.php. Сделать это можно, например, с помощью файлового менеджера. Перейдите в корневую директорию сайта. В разделе «Сайты» откройте меню настроек, нажмите «Перейти к файлам сайта» и перейдите в директорию public_html.
Откройте файл config.php и воспользуйтесь инструментом поиска и замены для изменения протокола с http на https:
Аналогичные правки нужно внести и в файле admin/config.php.
Обычно изменения этих настроек достаточно для корректной работы сайта по https, однако если смешанный контент на вашем сайте всё еще наблюдается, откройте меню «Система» – «Настройки» в панели администрирования сайта. Кликните «Редактировать» напротив используемого магазина.
Перейдите во вкладку «Сервер» и включите опцию «Использовать SSL».
Затем сохраните настройки.
Если после применения настроек и очистки кэша браузера на сайте всё еще наблюдается смешанное содержимое, вероятно, потребуется исправить ссылки вручную. Увидеть ссылки, которые необходимо скорректировать, можно в консоли разработчика. Также вы можете добавить следующее правило в файл .htaccess:
Header always set Content-Security-Policy: upgrade-insecure-requests
Это правило устанавливает заголовок, сообщающий браузерам о необходимости изменения протокола запроса с HTTP на HTTPS.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел «Помощь и поддержка»). А если вы захотите обсудить эту статью, наши продукты или свой проект с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.