EMZETT.
Login

Mixed Content: HTTP-Inhalte auf HTTPS-Seiten

Kurz: Eine per HTTPS geladene Seite bindet Ressourcen über unverschlüsseltes HTTP ein; Browser blockieren oder warnen davor.

Genauer: Meldung: Mixed Content: The page at 'https://…' was loaded over HTTPS, but requested an insecure resource 'http://…'. This request has been blocked. Auch wenn die Seite selbst verschlüsselt ist, könnte ein Angreifer unverschlüsselte Bilder, Skripte oder Stile mitlesen oder verändern.

Im Detail

Arten

  • Aktiver Mixed Content (Skripte, Stylesheets, iframes, Fetch/XHR): wird von Browsern blockiert, da er die ganze Seite kompromittieren kann.
  • Passiver Mixed Content (Bilder, Audio, Video): wurde früher nur mit Warnung geladen; moderne Browser laden ihn automatisch über HTTPS nach oder blockieren ihn.
  • Das Schloss-Symbol verschwindet oder zeigt eine Warnung.

Ursachen

  • Feste http://-Adressen im HTML, CSS, JavaScript oder in der Datenbank (Inhalte aus früherer HTTP-Zeit).
  • Drittanbieter-Skripte oder eingebettete Medien mit HTTP.
  • API-URLs, die in Konfiguration noch http:// enthalten.
  • Ein Proxy oder CDN, der die Seite als HTTP an den Browser weiterreicht oder falsche X-Forwarded-Proto-Header setzt, sodass die Anwendung selbst http://-Links erzeugt.

Lösungswege

  1. In den Entwicklerwerkzeugen (F12 → Konsole) die betroffenen URLs ablesen.
  2. Auf HTTPS umstellen oder protokollrelative/relative Adressen nutzen (/bild.png).
  3. Gespeicherte Inhalte (CMS, Datenbank) ersetzen (http://domain → https://domain).
  4. Drittanbieter wechseln, wenn sie kein HTTPS unterstützen.
  5. Server so konfigurieren, dass Weiterleitung HTTP→HTTPS und HSTS aktiv sind; Proxy-Header richtig setzen.
  6. Die Content-Security-Policy upgrade-insecure-requests weist den Browser an, HTTP-Ressourcen automatisch auf HTTPS zu heben (nur ein Notbehelf; besser die Quelle korrigieren).

Siehe auch: HTTPS, Security-Header, Let’s Encrypt, ERR_CERT_DATE_INVALID