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

Cargo algo de HTML en un iframe pero cuando un archivo referenciado está usando http, no https, obtengo el siguiente error:

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

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

El iframe no tiene el atributo src y el contenido se establece usando:

frame.open();
frame.write(html);
frame.close();

Nota:** Aunque esta solución puede haber funcionado en algunos navegadores cuando se escribió en 2014, ya no funciona. Navegar o redirigir a una URL HTTP en un iframe incrustado en una página HTTPS no está permitido por los navegadores modernos, incluso si el marco comenzó con una URL HTTPS.

La mejor solución que he creado 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 métodos:

  • Usar un tercero como embed.ly (pero realmente sólo es bueno para APIs http bien conocidas).

  • Cree su propio script de redirección en una página https que usted controle (una simple redirección javascript en una página con enlace relativo debería servir. Algo como: (puedes usar cualquier lenguaje/método)

    https://example.com Que tiene un iframe que enlaza con...

    https://example.com/utilities/redirect.html Que tiene un simple script de redirección js como...

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

  • Alternativamente, usted podría añadir un feed RSS o escribir algún lector/parser 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. Si no es por otra razón que aumenta el seo.

A no ser que consigas que el propietario del sitio http cree un certificado ssl, la solución más segura y permanente sería crear un feed RSS que agarre el contenido que necesitas (presumiblemente no estás realmente 'haciendo' nada en el sitio http -es decir, no entrando en ningún sistema).

El verdadero problema es que tener elementos http dentro de un sitio https representa un problema de seguridad. No hay formas completamente correctas de evitar este riesgo de seguridad, por lo que lo anterior son sólo soluciones 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 'hacks' pueden quedar obsoletos con el tiempo.

Comentarios (17)

Siempre obtendrá advertencias de contenido bloqueado en la mayoría de los navegadores cuando intente mostrar contenido no seguro en una página https. Esto es complicado si quieres incrustar cosas de otros sitios que no están detrás de ssl. Puede desactivar las advertencias o eliminar el bloqueo en su propio navegador, pero para otros visitantes es un problema.

Una forma de hacerlo es cargar el contenido del lado del servidor y guardar las imágenes y otras cosas en tu servidor y mostrarlas desde https.

También puedes intentar usar un servicio como embed.ly y obtener el contenido a través de ellos. Ellos tienen soporte para obtener el contenido detrás de https.

Comentarios (1)

Podrías intentar raspar lo que necesites con PHP u otro lenguaje del lado del servidor, y luego poner el iframe al contenido raspado. Aquí's un ejemplo con PHP:

scrapedcontent.php:

<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>

index.html:

Comentarios (3)