Змішаний вміст: HTTP-контент на сторінках HTTPS
Коротко: Сторінка, завантажена через HTTPS, містить ресурси через незахищений HTTP; браузери блокують це або попереджають.
Докладніше: Повідомлення: Mixed Content: The page at 'https://…' was loaded over HTTPS, but requested an insecure resource 'http://…'. This request has been blocked. Хоча сама сторінка зашифрована, зловмисник міг би прочитати або змінити незашифровані зображення, скрипти чи стилі.
Подробиці
Види
- Активний змішаний вміст (скрипти, таблиці стилів, iframe, fetch/XHR): блокується браузерами, бо може скомпрометувати всю сторінку.
- Пасивний змішаний вміст (зображення, аудіо, відео): раніше завантажувався лише з попередженням; сучасні браузери автоматично підвищують його до HTTPS або блокують.
- Значок замка зникає або показує попередження.
Причини
- Жорстко задані адреси
http://у HTML, CSS, JavaScript або в базі даних (вміст із часів HTTP). - Сторонні скрипти або вбудовані медіа через HTTP.
- URL API, що в конфігурації досі містять
http://. - Проксі або CDN, що передають сторінку браузеру як HTTP або задають неправильні заголовки
X-Forwarded-Proto, через що сам застосунок створює посиланняhttp://.
Рішення
- В інструментах розробника (F12 → Консоль) прочитайте відповідні URL.
- Перейдіть на HTTPS або використовуйте відносні адреси (
/image.png). - Замініть збережений вміст (CMS, база даних) (
http://domain→https://domain). - Змініть сторонні сервіси, якщо вони не підтримують HTTPS.
- Налаштуйте сервер так, щоб перенаправлення HTTP→HTTPS і HSTS були активні; правильно задайте заголовки проксі.
- Content-Security-Policy
upgrade-insecure-requestsвелить браузеру автоматично підвищувати ресурси HTTP до HTTPS (лише тимчасовий захід; краще виправити джерело).
Див. також: HTTPS, Заголовки безпеки, Let’s Encrypt, ERR_CERT_DATE_INVALID