Eu carrego algum HTML em um iframe, mas quando um arquivo referenciado está usando http, não https, eu recebo o seguinte erro:
[bloqueado] A página em {current_pagename} correu conteúdo inseguro a partir de {referenced_filename}.
Há alguma maneira de desligar isto ou de contornar isto?
O iframe não tem atributo src
e o conteúdo é definido utilizando:
frame.open();
frame.write(html);
frame.close();
Note: Embora esta solução possa ter funcionado em alguns navegadores quando foi escrita em 2014, já não funciona mais. Navegar ou redirecionar para uma URL HTTP em um
iframe
embutido em uma página HTTPS não é permitido pelos navegadores modernos, mesmo que o frame tenha começado com uma URL HTTPS.
A melhor solução que criei é simplesmente usar o google como o proxy ssl...
https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky
Testado e funciona em firefox.
Outros métodos:
Use uma terceira parte como o embed.ly (mas só é bom para APIs http bem conhecidas).
Crie seu próprio script de redirecionamento em uma página https que você controla (um simples redirecionamento javascript em uma página com link relativo deve fazer o truque. Algo como: (você pode usar qualquer langauge/método)
"https://example.com" que tem um iframe ligado a...
"COPY10" que tem um simples script de redirecionamento js como...
document.location.href ="http://thenonsslsite.com";
Alternativamente, você poderia adicionar um feed RSS ou escrever algum leitor/parador para ler o site http e exibi-lo dentro do seu site https.
Você também poderia/deveria recomendar ao proprietário do site http que eles criassem uma conexão ssl. Se por nenhuma outra razão além de aumenta o seo.
A menos que você consiga que o proprietário do site http crie um certificado ssl, a solução mais segura e permanente seria criar um feed RSS que pegasse o conteúdo que você precisa (presumivelmente você não está realmente 'fazendo' qualquer coisa no site http - ou seja, não fazer login em nenhum sistema).
O verdadeiro problema é que ter elementos http dentro de um site https representa uma questão de segurança. Não há formas completamente kosher de contornar este risco de segurança, por isso o acima exposto são apenas trabalhos correntes.
Note que você pode desativar esta medida de segurança na maioria dos navegadores (você mesmo, não para outros). Note também que estes 'hacks' podem tornar-se obsoletos com o tempo.
Você sempre receberá avisos de conteúdo bloqueado na maioria dos navegadores ao tentar exibir conteúdo não seguro em uma página https. Isto é complicado se você quiser incorporar coisas de outros sites que estão't atrás da ssl. Você pode desligar os avisos ou remover o bloqueio em seu próprio navegador, mas para outros visitantes isso's é um problema.
Uma maneira de fazer isso é carregar o lado do servidor de conteúdo e salvar as imagens e outras coisas no seu servidor e exibi-las a partir de https.
Você também pode tentar usar um serviço como o embed.ly e obter o conteúdo através deles. Eles têm suporte para obter o conteúdo por trás do https.
Você pode tentar raspar o que precisar com PHP ou outra linguagem do lado do servidor, e então colocar o iframe no conteúdo raspado. Aqui's um exemplo com o PHP:
scrapedcontent.php:
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
index.html:
<iframe src="scrapedcontent.php"></iframe>