Смешанное содержимое: часть страницы заблокирована при HTTPS

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

Смешанное содержимое возникает, когда страница по HTTPS подгружает ресурсы по HTTP; браузер блокирует скрипты и фреймы, а картинки может показать с предупреждением. Найдите ресурсы в консоли DevTools, замените адреса на https или относительные и добавьте заголовок upgrade-insecure-requests.

В этой статье
  1. Как это выглядит
  2. Найти все небезопасные ресурсы
  3. Постоянные исправления
Mixed Content
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Хранят старые страницы.Ошибка остаётся после исправления.Очистите кэш.

#Найти все небезопасные ресурсы

  1. Откройте консольАдминистратору сайта: откройте проблемную HTTPS-страницу в Chrome или Edge, нажмите F12 → вкладка «Console/Консоль» и перезагрузите страницу. Найдите сообщение Mixed Content с точным адресом HTTP-ресурса; скопируйте его в рабочие заметки. Во вкладке «Network/Сеть» можно включить сохранение журнала и повторить запрос. Если сообщение относится к внешнему виджету, сначала установите, есть ли у поставщика HTTPS-версия.
  2. Посмотрите вкладку «Сеть»Этот шаг предназначен владельцу сайта. Откройте проблемную страницу в Chrome или Edge, нажмите F12 → вкладка «Консоль»: найдите сообщение Mixed Content с URL ресурса, загруженного по http://. Во вкладке «Сеть» (Network) обновите страницу и воспользуйтесь фильтром по URL, если он доступен, чтобы увидеть блокируемый запрос. Скопируйте полный адрес ресурса и место его вызова. Исправление — загрузить ресурс по действительному https:// или разместить его на своём сервере через HTTPS; не отключайте защиту смешанного содержимого у посетителей.
  3. Найдите адреса в кодеТолько владельцу сайта: сохраните резервную копию файлов и базы. Откройте исходный код шаблона/страницы и найдите URL из ошибки Mixed Content либо выполните поиск строк http:// только в собственных шаблонах. Для CMS проверьте адреса в настройках и полях контента через штатный инструмент с поддержкой сериализованных данных, а не массовой заменой SQL. Сопоставьте каждую найденную ссылку с реальным ресурсом: не все внешние сервисы поддерживают HTTPS.
  4. Проверьте сторонние ресурсыВ Chrome/Edge откройте проблемную страницу → F12 → вкладка «Консоль». Найдите сообщения Mixed Content и точные адреса http:// ресурсов, которые страница пытается загрузить при HTTPS. Владельцу сайта: проверьте, доступен ли ресурс по HTTPS и совпадает ли адрес с доверенным источником; заменяйте ссылки в шаблоне или CMS после резервной копии. Команды просмотра памяти сервера к этой ошибке обычно не относятся.
  5. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Поиск жёстко заданных http:// в шаблонах и коде (путь замените)
    Linux · Терминал (Bash)Команда
    Поиск жёстко заданных http:// в шаблонах и коде (путь замените)
    grep -rn --include=*.php --include=*.html --include=*.js --include=*.css "http://" /var/www/example.com/ | grep -v "w3.org"
    Вариант 2WordPress: безопасная замена адресов в базе.
    Linux · Терминал (Bash)Команда
    WordPress: безопасная замена адресов в базе. Сначала пробный запуск без изменений
    wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
    wp search-replace 'http://example.com' 'https://example.com' --all-tables
    Вариант 3Другая CMS: запрос на поиск в таблице контента (имя таблицы и поля свои); перед UPDATE сделайте дамп
    SQLКоманда
    Другая CMS: запрос на поиск в таблице контента (имя таблицы и поля свои); перед UPDATE сделайте дамп
    SELECT id FROM articles WHERE body LIKE '%http://example.com%';

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

nginx.conf
Быстрое временное решение: заставить браузер заменять http:// на https:// в запросах страницы
add_header Content-Security-Policy "upgrade-insecure-requests" always;

Заголовок upgrade-insecure-requests — временная мера: он работает только если нужный ресурс доступен по https. Основной способ — исправить адреса в источнике. После исправления проверьте страницы в режиме инкогнито и повторите осмотр консоли, чтобы убедиться, что сообщений не осталось.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.