Ik laad wat HTML in een iframe, maar wanneer een bestand waarnaar verwezen wordt http gebruikt, en geen https, krijg ik de volgende foutmelding:
[geblokkeerd] De pagina op {current_pagename} liep onveilige inhoud van {referenced_filename}
Is er een manier om dit uit te zetten of een manier om het te omzeilen?
Het iframe heeft geen src
attribuut en de inhoud is ingesteld met:
frame.open();
frame.write(html);
frame.close();
Note: Hoewel deze oplossing misschien werkte in sommige browsers toen het werd geschreven in 2014, werkt het niet langer. Navigeren of omleiden naar een HTTP URL in een
iframe
ingebed in een HTTPS pagina is niet toegestaan door moderne browsers, zelfs als het frame begon met een HTTPS URL.
De beste oplossing die ik heb gemaakt is om gewoon google te gebruiken als de ssl proxy...
https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky
Getest en werkt in firefox.
Andere methodes:
Gebruik een derde partij zoals embed.ly (maar het is echt alleen goed voor bekende http API's).
Maak uw eigen redirect script op een https pagina die u controleert (een eenvoudige javascript redirect op een relatieve gelinkte pagina zou de truc moeten doen. Zoiets als: (je kunt elke taal/methode gebruiken)
https://example.com
Dat heeft een iframe die linkt naar...
https://example.com/utilities/redirect.html
Welke een simpel js redirect script heeft zoals...
document.location.href ="http://thenonsslsite.com";
Als alternatief kun je een RSS feed toevoegen of een reader/parser schrijven om de http site te lezen en weer te geven op je https site.
Je zou ook de http site eigenaar kunnen/moeten aanraden om een ssl verbinding te maken. Al was het alleen maar om het verhoogt de seo.
Tenzij je de http site eigenaar een ssl certificaat kan laten maken, zou de meest veilige en permanente oplossing zijn om een RSS feed te maken die de inhoud pakt die je nodig hebt (veronderstel dat je niet echt 'doing' iets doet op de http site -dat wil zeggen niet inlogt op een systeem).
Het echte probleem is dat het hebben van http elementen in een https site een veiligheidsprobleem is. Er zijn geen volledig koosjere manieren om dit veiligheidsrisico te omzeilen, dus het bovenstaande zijn slechts huidige work arounds.
Merk op, dat je deze veiligheidsmaatregel in de meeste browsers kunt uitschakelen (voor jezelf, niet voor anderen). Merk ook op dat deze 'hacks' na verloop van tijd verouderd kunnen raken.
Je zult altijd waarschuwingen krijgen van geblokkeerde inhoud in de meeste browsers als je probeert om niet-veilige inhoud weer te geven op een https pagina. Dit is lastig als je dingen wilt embedden van andere sites die niet achter ssl zitten. Je kunt de waarschuwingen uitzetten of de blokkering opheffen in je eigen browser maar voor andere bezoekers is het'een probleem.
Een manier om het te doen is om de inhoud server side te laden en de afbeeldingen en andere dingen op je server op te slaan en ze vanaf https weer te geven.
Je kunt ook proberen een service als embed.ly te gebruiken en de inhoud via hen te krijgen. Zij hebben ondersteuning om de inhoud achter https te krijgen.
Je zou kunnen proberen te schrapen wat je nodig hebt met PHP of een andere server side taal, zet dan het iframe op de geschraapte inhoud. Hier's een voorbeeld met PHP:
scrapedcontent.php:
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
index.html:
<iframe src="scrapedcontent.php"></iframe>