EMZETT.
Увійти

Змішаний вміст: 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://.

Рішення

  1. В інструментах розробника (F12 → Консоль) прочитайте відповідні URL.
  2. Перейдіть на HTTPS або використовуйте відносні адреси (/image.png).
  3. Замініть збережений вміст (CMS, база даних) (http://domain → https://domain).
  4. Змініть сторонні сервіси, якщо вони не підтримують HTTPS.
  5. Налаштуйте сервер так, щоб перенаправлення HTTP→HTTPS і HSTS були активні; правильно задайте заголовки проксі.
  6. Content-Security-Policy upgrade-insecure-requests велить браузеру автоматично підвищувати ресурси HTTP до HTTPS (лише тимчасовий захід; краще виправити джерело).

Див. також: HTTPS, Заголовки безпеки, Let’s Encrypt, ERR_CERT_DATE_INVALID