Ich lade etwas HTML in einen iframe, aber wenn eine Datei, auf die verwiesen wird, http und nicht https verwendet, erhalte ich den folgenden Fehler:
[blocked] Die Seite {current_pagename} hat unsicheren Inhalt von {referenced_filename}
Gibt es eine Möglichkeit, dies zu deaktivieren, oder eine Möglichkeit, es zu umgehen?
Der iframe hat kein src
-Attribut und die Inhalte werden mit gesetzt:
frame.open();
frame.write(html);
frame.close();
Hinweis: Während diese Lösung in einigen Browsern funktioniert haben mag, als sie 2014 geschrieben wurde, funktioniert sie nicht mehr. Das Navigieren oder Weiterleiten zu einer HTTP-URL in einem in eine HTTPS-Seite eingebetteten "iframe" wird von modernen Browsern nicht zugelassen, selbst wenn der Frame mit einer HTTPS-URL begann.
Die beste Lösung, die ich erstellt habe, ist, einfach Google als SSL-Proxy zu verwenden...
https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky
Getestet und funktioniert in firefox.
Andere Methoden:
Verwenden Sie einen Drittanbieter wie embed.ly (aber es ist wirklich nur gut für bekannte http-APIs).
Erstellen Sie Ihr eigenes Umleitungsskript auf einer von Ihnen kontrollierten https-Seite (eine einfache Javascript-Umleitung auf einer relativ verlinkten Seite sollte ausreichen. Etwas wie: (Sie können jede beliebige Sprache/Methode verwenden)
https://example.com
Das hat einen iframe, der zu...
https://example.com/utilities/redirect.html
, das ein einfaches js-Redirect-Skript enthält wie...
document.location.href ="http://thenonsslsite.com";
Alternativ könnten Sie einen RSS-Feed hinzufügen oder einen Reader/Parser schreiben, der die http-Site liest und sie auf Ihrer https-Site anzeigt.
Sie könnten/sollten dem Besitzer der http-Site auch empfehlen, eine SSL-Verbindung einzurichten. Wenn auch aus keinem anderen Grund als es verbessert die Suchmaschinenoptimierung.
Wenn Sie den Inhaber der HTTP-Site nicht dazu bringen können, ein SSL-Zertifikat zu erstellen, wäre die sicherste und dauerhafteste Lösung, einen RSS-Feed zu erstellen, der die von Ihnen benötigten Inhalte abruft (vermutlich tun Sie nichts auf der HTTP-Site, d. h. Sie melden sich nicht bei einem System an).
Das eigentliche Problem ist, dass die Verwendung von http-Elementen innerhalb einer https-Website ein Sicherheitsproblem darstellt. Es gibt keine völlig koscheren Wege, um dieses Sicherheitsrisiko zu umgehen, so dass die oben genannten Lösungen nur eine Übergangslösung darstellen.
Beachten Sie, dass Sie diese Sicherheitsmaßnahme in den meisten Browsern deaktivieren können (für sich selbst, nicht für andere). Beachten Sie auch, dass diese "Hacks" mit der Zeit veraltet sein können.
In den meisten Browsern werden Sie immer Warnungen über blockierte Inhalte erhalten, wenn Sie versuchen, nicht sichere Inhalte auf einer https-Seite anzuzeigen. Das ist knifflig, wenn Sie Inhalte von anderen Seiten einbetten wollen, die nicht mit SSL gesichert sind. Sie können die Warnungen abschalten oder die Blockierung in Ihrem eigenen Browser aufheben, aber für andere Besucher ist das ein Problem.
Eine Möglichkeit ist es, den Inhalt serverseitig zu laden und die Bilder und andere Dinge auf Ihrem Server zu speichern und sie über https anzuzeigen.
Sie können auch versuchen, einen Dienst wie embed.ly zu nutzen und die Inhalte über diesen Dienst zu beziehen. Sie bieten Unterstützung für das Abrufen der Inhalte hinter https.
Sie könnten versuchen, mit PHP oder einer anderen serverseitigen Sprache zu scrapen, was Sie brauchen, und dann den iframe auf den gescrapten Inhalt setzen. Hier ist ein Beispiel mit PHP:
scrapedcontent.php:
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
index.html:
<iframe src="scrapedcontent.php"></iframe>