Carrego um pouco de HTML em um iframe, mas quando um arquivo referenciado está usando http, não https, recebo o seguinte erro:
[bloqueado] A página em {current_pagename} executou conteúdo não seguro de {referenced_filename}
Existe alguma maneira de desativar isso ou alguma maneira de contornar isso?
O iframe não tem src
atributo e o conteúdo é definido usando:
frame.open();
frame.write(html);
frame.close();
Respostas:
Com base na generalidade desta pergunta, acho que você precisará configurar seu próprio proxy HTTPS em algum servidor online. Execute os seguintes passos:
Se você simplesmente baixar o conteúdo do site remoto via file_get_contents ou semelhante, ainda poderá ter links inseguros para o conteúdo. Você precisará encontrá-los com regex e também substituí-los. As imagens são difíceis de resolver, mas encontrei uma solução alternativa aqui: http://foundationphp.com/tutorials/image_proxy.php
fonte
A melhor solução que criei é simplesmente usar o google como proxy ssl ...
Testado e funciona no firefox.
Outros métodos:
Use um terceiro, como o embed.ly (mas é realmente bom apenas para APIs http conhecidas).
Crie seu próprio script de redirecionamento em uma página https que você controla (um redirecionamento javascript simples em uma página vinculada relativa deve fazer o truque. Algo como: (você pode usar qualquer idioma / método)
https://example.com
Que possui um iframe com link para ...https://example.com/utilities/redirect.html
Que tem um script de redirecionamento js simples como ...document.location.href ="http://thenonsslsite.com";
Como alternativa, você pode adicionar um feed RSS ou escrever um leitor / analisador para ler o site http e exibi-lo em seu site https.
Você também deve / deve recomendar ao proprietário do site http que ele crie uma conexão SSL. Se por nenhuma outra razão do que aumenta 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 captura o conteúdo que você precisa (presumivelmente você não está realmente 'fazendo' nada no site http - isto é, diga não fazer login em nenhum sistema).
O problema real é que ter elementos http em um site https representa um problema de segurança. Não há maneiras completamente kosher de contornar esse risco à segurança; portanto, as alternativas acima são apenas soluções atuais.
Observe que você pode desativar essa medida de segurança na maioria dos navegadores (você mesmo, não em outros). Observe também que esses 'hacks' podem se tornar obsoletos ao longo do tempo.
fonte
Eu sei que este é um post antigo, mas outra solução seria usar cURL, por exemplo:
redirect.php:
na sua tag iframe, algo como:
Este é apenas um exemplo MINIMAL para ilustrar a idéia - não limpa a URL nem impede que outra pessoa use o redirect.php para seus próprios fins. Considere essas coisas no contexto do seu próprio site.
A vantagem, porém, é que é mais flexível. Por exemplo, você pode adicionar alguma validação dos dados $ ondulados para garantir que realmente seja o que deseja antes de exibi-los - por exemplo, teste para garantir que não seja um 404 e tenha seu próprio conteúdo alternativo pronto, se é.
Além disso - estou um pouco cansado de confiar nos redirecionamentos Javascript para qualquer coisa importante.
Felicidades!
fonte
example.com
que possui um SSL. Estou incorporando um iframe com oexample.net
qual não há SSL. Oexample.com
tem um link comohref="https://stackoverflow.com/path/file.html"
e ao clicar nele, ele está abrindo como emhttps://example.com/path/file.html
vez dehttp://example.net/path/file.html
adicione
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
na cabeçafonte
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. Isso é complicado se você deseja incorporar coisas de outros sites que não estão atrás do ssl. Você pode desativar os avisos ou remover o bloqueio no seu próprio navegador, mas para outros visitantes é um problema.
Uma maneira de fazer isso é carregar o lado do servidor de conteúdo, salvar as imagens e outras coisas no servidor e exibi-las em 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 de https.
fonte
O uso do Google como proxy SSL não está funcionando atualmente,
Por quê?
Se você abriu qualquer página do google, encontrará um
x-frame-options
campo no cabeçalho.(Citação da MDN)
Uma das soluções
Abaixo está o meu trabalho para esse problema:
Carregue o conteúdo no AWS S3 e ele criará um link https para o recurso.
Aviso: defina a permissão para o arquivo html para permitir que todos o vejam.
Depois disso, podemos usá-lo como o
src
iframe nos sites https.fonte
Você pode tentar raspar o que precisar com PHP ou outra linguagem do servidor e colocar o iframe no conteúdo raspado. Aqui está um exemplo com o PHP:
scrapedcontent.php:
index.html:
fonte
Tudo que você precisa fazer é usar o Google como um servidor proxy.
https://www.google.ie/gwt/x?u=[YourHttpLink] .
Funcionou para mim.
Créditos: - https://www.wikihow.com/Use-Google-As-a-Proxy
fonte
Use seu próprio proxy reverso HTTPS para HTTP.
Se o seu caso de uso for sobre alguns, raramente alterando URLs para incorporar ao
iframe
, você pode simplesmente configurar um proxy reverso para isso em seu próprio servidor e configurá-lo para que umhttps
URL em seu servidor seja mapeado para umhttp
URL no servidor proxy. Como um proxy reverso está totalmente do lado do servidor, o navegador não pode descobrir que está "apenas" conversando com um proxy do site real e, portanto, não irá reclamar, pois a conexão com o proxy usa o SSL corretamente.Se, por exemplo, você usar o Apache2 como seu servidor da web, consulte estas instruções para criar um proxy reverso.
fonte
mitmproxy
é uma ferramenta de depuração, não um sistema de proxy de produção.ngrok
é um serviço de encapsulamento, principalmente para servidores de desenvolvimento, não entendo como isso pode ser útil para isso.