Skip to content

Как исправить ошибку Mixed Content

Коротко:

Mixed Content — HTTPS-страница загружает HTTP-ресурсы (картинки, скрипты, iframe). Chrome блокирует active (скрипты/iframe) полностью, passive (картинки) — показывает warning. Исправление: заменить все http:// на https:// или // (protocol-relative), либо добавить header Content-Security-Policy: upgrade-insecure-requests.

Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.

Пошаговая настройка

  1. Откройте DevTools → Console → найдите ошибки "Mixed Content: The page was loaded over HTTPS"
  2. Просканируйте сайт через Mixed Content Scanner Enterno.io — получите полный список
  3. Замените HTTP-ссылки в HTML: http://cdn.old.com → https://cdn.old.com
  4. В WordPress: SQL UPDATE wp_posts SET post_content = REPLACE(post_content, "http://example.com", "https://example.com")
  5. В 1С-Битрикс: админка → Настройки → Сайты → изменить server_name, и запустить "Конвертировать ссылки"
  6. Добавьте header: Content-Security-Policy: upgrade-insecure-requests; — автоматически апгрейдит все HTTP на HTTPS
  7. Проверьте повторно через сканер — должно быть 0 нарушений

Рабочие примеры

СценарийКонфиг / запись
nginx: CSP upgrade-insecure-requestsadd_header Content-Security-Policy "upgrade-insecure-requests;" always;
Apache: .htaccessHeader set Content-Security-Policy "upgrade-insecure-requests;"
HTML meta fallback<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests;">
Protocol-relative URL<img src="//cdn.example.com/logo.png"> (работает и HTTP и HTTPS)
WordPress pluginReally Simple SSL — авто-замена + HSTS

Типичные ошибки

  • CSP upgrade-insecure-requests не работает если CDN сам не отдаёт HTTPS — ресурс просто 404
  • <a href="http://..."> не считается mixed content, но UX плохой — замените всё
  • JavaScript XMLHttpRequest к HTTP endpoint блокируется без warning — проверьте вручную
  • iframe с HTTP-источником — active mixed content, блокируется Chrome целиком
  • WebSocket ws:// на HTTPS-странице тоже блокируется — используйте wss://
HTTP на HTTPS-сайтеРесурсы по незащищённому протоколу
Активный контентJS/CSS блокируется браузером
Пассивный контентИзображения с предупреждением
Ресурсы страницыВсе внешние ресурсы проверяются

Почему нам доверяют

HTTP
обнаружение mixed-content
HTTPS
проверка безопасности
CSS/JS
все типы ресурсов
Free
без ограничений

Как это работает

1

Введите URL страницы

2

Сканируем все ресурсы

3

Находим HTTP-ресурсы на HTTPS

Что такое Mixed Content?

Mixed Content — загрузка HTTP-ресурсов (изображений, скриптов, CSS) на HTTPS-странице. Браузеры блокируют активный mixed content (JS, CSS) и предупреждают о пассивном (изображения).

Сканирование ресурсов

Находим все HTTP-ресурсы на странице: скрипты, стили, изображения, фреймы.

Классификация угроз

Делим на активный (критичный) и пассивный (некритичный) mixed content.

Список проблемных URL

Каждый HTTP-ресурс перечислен с типом и рекомендацией по исправлению.

Быстрая проверка

Результат за секунды — проверяем страницу без полной загрузки браузером.

Кому это нужно

Безопасники

аудит после миграции на HTTPS

Разработчики

поиск небезопасных ресурсов

SEO-специалисты

устранение предупреждений браузера

Системные администраторы

контроль третьесторонних ресурсов

Частые ошибки

Игнорировать пассивный mixed contentHTTP-изображения не блокируются, но браузер показывает предупреждение в адресной строке.
Не проверять после добавления JSСторонние скрипты могут подгружать HTTP-ресурсы. Проверяйте после подключения.
Использовать абсолютные HTTP URLВезде используйте относительные URL или схему // для адаптации протокола.
Не настраивать CSPContent-Security-Policy: upgrade-insecure-requests автоматически заменяет HTTP на HTTPS.

Лучшие практики

Используйте <code>upgrade-insecure-requests</code>CSP-директива автоматически обновляет все HTTP-ресурсы до HTTPS.
Проверяйте при деплоеВключите mixed content проверку в пайплайн CI/CD.
Используйте относительные URLsrc="/images/logo.png" вместо src="http://example.com/images/logo.png".
Следите за сторонними виджетамиВиджеты соцсетей и рекламные системы — частый источник mixed content.

Получите больше с бесплатным аккаунтом

История проверок mixed content и мониторинг HTTPS-безопасности сайта.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

В чём разница между active и passive mixed content?

Active — скрипты, iframe, stylesheets, XHR — могут выполнить код с ограничениями HTTPS-страницы. Chrome блокирует полностью. Passive — картинки, аудио, видео — только пассивно отображаются. Показывают warning, но не блокируются.

Можно ли отключить блокировку?

Для отдельного домена в Chrome: Settings → Privacy → Site settings → Insecure content → Allowed for specific site. Но на production это опасно — используйте только для dev.

upgrade-insecure-requests работает везде?

Chrome 43+, Firefox 42+, Safari 10.1+. IE не поддерживает, но на enterno.io mobile/desktop браузеры покрывают 98%.

Как предотвратить mixed content в новых статьях?

CMS-плагин для авто-замены при сохранении (WordPress: Really Simple SSL), Git pre-commit hook для контента, CSP-report мониторинг в production.