Carico un po' di HTML in un iframe ma quando un file referenziato usa http, non https, ottengo il seguente errore:
[bloccato] La pagina a {current_pagename} ha eseguito contenuti insicuri da {referenced_filename}
C'è un modo per disattivare questo o un modo per aggirarlo?
L'iframe non ha attributo src
e il contenuto è impostato usando:
frame.open();
frame.write(html);
frame.close();
Nota: Mentre questa soluzione potrebbe aver funzionato in alcuni browser quando è stata scritta nel 2014, non funziona più. La navigazione o il reindirizzamento a un URL HTTP in un
iframe
incorporato in una pagina HTTPS non è consentito dai browser moderni, anche se il frame ha iniziato con un URL HTTPS.
La soluzione migliore che ho creato è semplicemente usare google come proxy ssl...
https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky
Testato e funziona in firefox.
Altri metodi:
Usare una terza parte come embed.ly (ma è davvero buono solo per le API http ben note).
Creare il proprio script di reindirizzamento su una pagina https che si controlla (un semplice reindirizzamento javascript su una pagina collegata relativa dovrebbe fare il trucco. Qualcosa come: (potete usare qualsiasi lingua/metodo)
https://example.com
Che ha un iframe che collega a...
https://example.com/utilities/redirect.html
Che ha un semplice script di reindirizzamento js come...
document.location.href ="http://thenonsslsite.com";
In alternativa, potresti aggiungere un feed RSS o scrivere qualche lettore/parser per leggere il sito http e visualizzarlo all'interno del tuo sito https.
Potresti/dovresti anche raccomandare al proprietario del sito http di creare una connessione ssl. Se non altro perché aumenta il seo.
A meno che tu non riesca a convincere il proprietario del sito http a creare un certificato ssl, la soluzione più sicura e permanente sarebbe quella di creare un feed RSS che prenda il contenuto di cui hai bisogno (presumibilmente non stai effettivamente 'facendo'qualcosa sul sito http - vale a dire non ti stai collegando a nessun sistema).
Il vero problema è che avere elementi http dentro un sito https rappresenta un problema di sicurezza. Non ci sono modi completamente kosher per aggirare questo rischio per la sicurezza, quindi quanto sopra è solo un modo per aggirare il problema.
Notate che potete disabilitare questa misura di sicurezza nella maggior parte dei browser (voi stessi, non gli altri). Notate anche che questi 'hack' possono diventare obsoleti nel tempo.
Otterrete sempre avvisi di contenuto bloccato nella maggior parte dei browser quando si cerca di visualizzare contenuti non sicuri su una pagina https. Questo è difficile se si vuole incorporare roba da altri siti che non sono dietro ssl. Puoi disattivare gli avvisi o rimuovere il blocco nel tuo browser, ma per gli altri visitatori è un problema.
Un modo per farlo è quello di caricare il contenuto lato server e salvare le immagini e altre cose sul tuo server e visualizzarle da https.
Puoi anche provare ad usare un servizio come embed.ly e ottenere il contenuto attraverso di loro. Hanno il supporto per ottenere il contenuto dietro https.
Potresti provare a raschiare quello che ti serve con PHP o un altro linguaggio lato server, poi mettere l'iframe al contenuto raschiato. Ecco un esempio con PHP:
scrapedcontent.php:
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
index.html:
<iframe src="scrapedcontent.php"></iframe>