Mixed Content: The page at 'https://example.com/' was loaded over HTTPS, but requested an insecure resource 'http://example.com/script.js'. This request has been blocked.
#Как это выглядит
После перехода на HTTPS сайт открывается, но часть элементов не работает: нет картинок, не загружаются стили, не отвечают формы, значок замка перечёркнут или написано «Не защищено». В консоли браузера (F12 → вкладка Console) видны красные сообщения «Mixed Content». Браузеры делят такое содержимое на активное (скрипты, стили, фреймы, XHR) — оно блокируется полностью — и пассивное (изображения, видео) — оно может загружаться с предупреждением или автоматически подменяться на HTTPS.
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Абсолютные ссылки на httpВ шаблонах и контенте. | В консоли — один и тот же домен. | Замените на https:// или на относительные пути (/images/logo.png). |
| Ресурсы стороннего сайта без HTTPSСкрипт или шрифт не поддерживает https. | Блокируется скрипт. | Найдите версию по https или разместите файл у себя. |
| Неверные настройки CMSВ WordPress указан http в «Адрес сайта». | Все ссылки генерируются с http. | Исправьте настройки и очистите кэш. |
| Прокси не передаёт информацию о протоколеПриложение за прокси думает, что работает по http. | Генерируются http-ссылки. | Передайте заголовок X-Forwarded-Proto и настройте приложение доверять ему. |
| Кэш и CDNХранят старые страницы. | Ошибка остаётся после исправления. | Очистите кэш. |
#Найти все небезопасные ресурсы
- Откройте консольАдминистратору сайта: откройте проблемную HTTPS-страницу в Chrome или Edge, нажмите
F12→ вкладка «Console/Консоль» и перезагрузите страницу. Найдите сообщениеMixed Contentс точным адресом HTTP-ресурса; скопируйте его в рабочие заметки. Во вкладке «Network/Сеть» можно включить сохранение журнала и повторить запрос. Если сообщение относится к внешнему виджету, сначала установите, есть ли у поставщика HTTPS-версия. - Посмотрите вкладку «Сеть»Этот шаг предназначен владельцу сайта. Откройте проблемную страницу в Chrome или Edge, нажмите F12 → вкладка «Консоль»: найдите сообщение
Mixed Contentс URL ресурса, загруженного поhttp://. Во вкладке «Сеть» (Network) обновите страницу и воспользуйтесь фильтром по URL, если он доступен, чтобы увидеть блокируемый запрос. Скопируйте полный адрес ресурса и место его вызова. Исправление — загрузить ресурс по действительномуhttps://или разместить его на своём сервере через HTTPS; не отключайте защиту смешанного содержимого у посетителей. - Найдите адреса в кодеТолько владельцу сайта: сохраните резервную копию файлов и базы. Откройте исходный код шаблона/страницы и найдите URL из ошибки
Mixed Contentлибо выполните поиск строкhttp://только в собственных шаблонах. Для CMS проверьте адреса в настройках и полях контента через штатный инструмент с поддержкой сериализованных данных, а не массовой заменой SQL. Сопоставьте каждую найденную ссылку с реальным ресурсом: не все внешние сервисы поддерживают HTTPS. - Проверьте сторонние ресурсыВ Chrome/Edge откройте проблемную страницу → F12 → вкладка «Консоль». Найдите сообщения
Mixed Contentи точные адресаhttp://ресурсов, которые страница пытается загрузить при HTTPS. Владельцу сайта: проверьте, доступен ли ресурс по HTTPS и совпадает ли адрес с доверенным источником; заменяйте ссылки в шаблоне или CMS после резервной копии. Команды просмотра памяти сервера к этой ошибке обычно не относятся. - Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
#Постоянные исправления
add_header Content-Security-Policy "upgrade-insecure-requests" always;Заголовок upgrade-insecure-requests — временная мера: он работает только если нужный ресурс доступен по https. Основной способ — исправить адреса в источнике. После исправления проверьте страницы в режиме инкогнито и повторите осмотр консоли, чтобы убедиться, что сообщений не осталось.