Cómo permitir contenido http dentro de un iframe en un sitio https

Resuelto georgephillips asked hace 11 años • 10 respuestas

Cargo algo de HTML en un iframe, pero cuando un archivo al que se hace referencia usa http, no https, aparece el siguiente error:

[bloqueado] La página en {current_pagename} ejecutó contenido inseguro de {referenced_filename}

¿Hay alguna forma de desactivar esto o alguna forma de evitarlo?

El iframe no tiene ningún srcatributo y los contenidos se configuran usando:

frame.open();
frame.write(html);
frame.close();
georgephillips avatar Aug 20 '13 12:08 georgephillips
Aceptado

Nota: Si bien esta solución puede haber funcionado en algunos navegadores cuando se escribió en 2014, ya no funciona. Los navegadores modernos no permiten navegar o redirigir a una URL HTTP en una iframepágina integrada en una HTTPS, incluso si el marco comenzó con una URL HTTPS.

La mejor solución que creé es simplemente usar Google como proxy SSL...

https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky

Probado y funciona en Firefox.

Otros metodos:

  • Utilice un tercero como embed.ly (pero en realidad solo es bueno para API http conocidas).

  • Cree su propio script de redireccionamiento en una página https que controle (un simple redireccionamiento de JavaScript en una página vinculada relativa debería funcionar. Algo como: (puede usar cualquier idioma/método)

    https://example.comEso tiene un iframe que enlaza a...

    https://example.com/utilities/redirect.htmlQue tiene un script de redireccionamiento js simple como...

    document.location.href ="http://thenonsslsite.com";

  • Alternativamente, puede agregar una fuente RSS o escribir algún lector/analizador para leer el sitio http y mostrarlo dentro de su sitio https.

  • También podría/debería recomendar al propietario del sitio http que cree una conexión SSL. Aunque solo sea porque aumenta el SEO .

A menos que pueda lograr que el propietario del sitio http cree un certificado ssl, la solución más segura y permanente sería crear una fuente RSS que recoja el contenido que necesita (presumiblemente en realidad no está "haciendo" nada en el sitio http; es decir, digamos no iniciar sesión en ningún sistema).

El verdadero problema es que tener elementos http dentro de un sitio https representa un problema de seguridad. No existen formas completamente kosher de evitar este riesgo de seguridad, por lo que las anteriores son sólo soluciones alternativas actuales.

Tenga en cuenta que puede desactivar esta medida de seguridad en la mayoría de los navegadores (usted mismo, no para otros). También tenga en cuenta que estos 'trucos' pueden quedar obsoletos con el tiempo.

Matthew Peters avatar Aug 07 '2014 18:08 Matthew Peters

Según la generalidad de esta pregunta, creo que necesitará configurar su propio proxy HTTPS en algún servidor en línea. Realice los siguientes pasos:

  • Prepare su servidor proxy: instale IIS, Apache
  • Obtenga un certificado SSL válido para evitar errores de seguridad (gratis desde startsl.com, por ejemplo)
  • Escriba un contenedor que descargue contenido inseguro (cómo hacerlo a continuación)
  • Desde su sitio/aplicación obtenga https://yourproxy.com/?page=http://insecurepage.com

Si simplemente descarga contenido de un sitio remoto a través de file_get_contents o similar, aún puede tener enlaces inseguros al contenido. Tendrás que encontrarlos con expresiones regulares y también reemplazarlos. Las imágenes son difíciles de resolver, pero encontré una solución aquí: http://foundationphp.com/tutorials/image_proxy.php

panpernicek avatar Aug 14 '2014 03:08 panpernicek