166 votes

Comment autoriser le contenu http dans un iframe sur un site https

Je charge du HTML dans un iframe mais lorsque un fichier référencé utilise http, pas https, j'obtiens l'erreur suivante:

[bloqué] La page à {current_pagename} a chargé du contenu non sécurisé depuis {referenced_filename}

Y a-t-il un moyen pour désactiver ceci ou un moyen de contourner cela?

L'iframe n'a pas d'attribut src et le contenu est défini en utilisant :

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

8voto

David Guan Points 2118

L'utilisation de Google en tant que proxy SSL ne fonctionne pas actuellement,

Pourquoi ?

Si vous ouvrez n'importe quelle page sur Google, vous trouverez un champ x-frame-options dans l'en-tête. En-tête de réponse de Google

L'en-tête de réponse HTTP X-Frame-Options peut être utilisé pour indiquer si un navigateur doit être autorisé ou non à rendre une page dans une , </code> ou <code><object></code>. Les sites peuvent l'utiliser pour éviter les attaques par clickjacking, en s'assurant que leur contenu n'est pas incorporé dans d'autres sites.</p> </blockquote> <p>(Citation de MDN)</p> <h3>Une des solutions</h3> <p>Voici ma solution à ce problème :</p> <p>Téléchargez le contenu sur AWS S3, qui créera un lien https pour la ressource.<br> Note : définir les autorisations du fichier html pour permettre à tout le monde de le visualiser.</p> <p>Ensuite, nous pouvons l'utiliser en tant que <code>src</code> d'un iframe sur des sites web en https. <a href="https://i.stack.imgur.com/5oGoh.png" rel="noreferrer"><img src="https://i.stack.imgur.com/5oGoh.png" alt="AWS"></a></p></x-turndown>

2voto

Grant Points 73

Vous pourriez essayer de récupérer ce dont vous avez besoin avec PHP ou un autre langage côté serveur, puis mettre l'iframe vers le contenu récupéré. Voici un exemple avec PHP :

scrapedcontent.php :

index.html :

2voto

tanius Points 349

Utilisez votre propre proxy inverse HTTPS vers HTTP.

Si votre cas d'utilisation concerne quelques URL peu fréquemment modifiées à intégrer dans l'iframe, vous pouvez simplement configurer un proxy inverse pour cela sur votre propre serveur et le configurer de manière à ce qu'une URL https sur votre serveur corresponde à une URL http sur le serveur proxy. Comme un proxy inverse est entièrement côté serveur, le navigateur ne peut pas découvrir qu'il ne communique "qu'avec un proxy du vrai site web, et donc ne se plaint pas car la connexion avec le proxy utilise correctement SSL.

Si par exemple vous utilisez Apache2 comme serveur web, consultez ces instructions pour créer un proxy inverse.

0voto

Star TechTricks Points 35

Tout ce que vous avez à faire est juste d'utiliser Google en tant que serveur proxy.

https://www.google.ie/gwt/x?u=[YourHttpLink].

Ça a marché pour moi.

Crédits:- https://www.wikihow.com/Use-Google-As-a-Proxy

0voto

sesperanto Points 151

Essayez d'utiliser des liens relatifs au protocole.

Votre lien est http://example.com/script.js, utilisez :

De cette façon, vous pouvez laisser le schéma libre (ne pas indiquer le protocole dans les liens) et faire confiance au navigateur pour utiliser le protocole de la page Web intégrée. Si vos utilisateurs visitent la version HTTP de votre page Web, le script sera chargé via http:// et si vos utilisateurs visitent la version HTTPS de votre site Web, le script sera chargé via https://.

Vu sur : https://developer.mozilla.org/es/docs/Seguridad/MixedContent/arreglar_web_con_contenido_mixto

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X