Je charge du HTML dans une iframe mais lorsqu'un fichier référencé utilise http et non https, j'obtiens l'erreur suivante:
[bloqué] La page à {current_pagename} a diffusé du contenu non sécurisé à partir de {referenced_filename}
Existe-t-il un moyen de désactiver cela ou un moyen de le contourner?
L'iframe n'a pas d' src
attribut et le contenu est défini en utilisant:
frame.open();
frame.write(html);
frame.close();
Réponses:
Sur la base de la généralité de cette question, je pense que vous devrez configurer votre propre proxy HTTPS sur un serveur en ligne. Suivez les étapes suivantes:
Si vous téléchargez simplement le contenu du site distant via file_get_contents ou similaire, vous pouvez toujours avoir des liens non sécurisés vers le contenu. Vous devrez les trouver avec regex et également les remplacer. Les images sont difficiles à résoudre, mais j'ai trouvé une solution de contournement ici: http://foundationphp.com/tutorials/image_proxy.php
la source
La meilleure solution que j'ai créée est d'utiliser simplement google comme proxy ssl ...
Testé et fonctionne sous Firefox.
Autres méthodes:
Utilisez un tiers tel que embed.ly (mais ce n'est vraiment bon que pour les API http bien connues).
Créez votre propre script de redirection sur une page https que vous contrôlez (une simple redirection javascript sur une page liée relative devrait faire l'affaire. Quelque chose comme: (vous pouvez utiliser n'importe quelle langue / méthode)
https://example.com
Cela a un lien iframe vers ...https://example.com/utilities/redirect.html
Qui a un simple script de redirection js comme ...document.location.href ="http://thenonsslsite.com";
Vous pouvez également ajouter un flux RSS ou écrire un lecteur / analyseur pour lire le site http et l'afficher dans votre site https.
Vous pouvez / devriez également recommander au propriétaire du site http de créer une connexion SSL. Si pour aucune autre raison que cela augmente le référencement .
À moins que vous ne puissiez demander au propriétaire du site http de créer un certificat SSL, la solution la plus sûre et la plus permanente serait de créer un flux RSS en saisissant le contenu dont vous avez besoin (vraisemblablement, vous ne faites rien sur le site http, c'est-à-dire dire ne pas se connecter à un système).
Le vrai problème est que le fait d'avoir des éléments http dans un site https représente un problème de sécurité. Il n'y a pas de moyens complètement casher de contourner ce risque de sécurité, donc les éléments ci-dessus ne sont que des solutions de rechange actuelles.
Notez que vous pouvez désactiver cette mesure de sécurité dans la plupart des navigateurs (vous-même, pas pour les autres). Notez également que ces «hacks» peuvent devenir obsolètes avec le temps.
la source
Je sais que c'est un ancien post, mais une autre solution serait d'utiliser cURL, par exemple:
redirect.php:
puis dans votre tag iframe, quelque chose comme:
Ceci est juste un exemple MINIMAL pour illustrer l'idée - il ne nettoie pas l'URL, ni n'empêcherait quelqu'un d'autre d'utiliser le redirect.php à ses propres fins. Considérez ces choses dans le contexte de votre propre site.
L'avantage, cependant, est qu'il est plus flexible. Par exemple, vous pouvez ajouter une validation des données $ curl'd pour vous assurer que c'est vraiment ce que vous voulez avant de l'afficher - par exemple, testez pour vous assurer qu'il ne s'agit pas d'un 404, et ayez un contenu alternatif prêt s'il est est.
De plus, je suis un peu fatigué de me fier aux redirections Javascript pour tout ce qui est important.
À votre santé!
la source
example.com
qui a un SSL. J'intègre un iframe avecexample.net
qui n'a pas de SSL. Leexample.com
a un lien commehref="https://stackoverflow.com/path/file.html"
et en cliquant dessus, il s'ouvre commehttps://example.com/path/file.html
au lieu dehttp://example.net/path/file.html
ajouter
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
en têtela source
Vous recevrez toujours des avertissements de contenu bloqué dans la plupart des navigateurs lorsque vous essayez d'afficher du contenu non sécurisé sur une page https. Ceci est délicat si vous souhaitez intégrer des éléments provenant d'autres sites qui ne sont pas derrière SSL. Vous pouvez désactiver les avertissements ou supprimer le blocage dans votre propre navigateur, mais pour les autres visiteurs, c'est un problème.
Une façon de le faire consiste à charger le côté serveur de contenu et à enregistrer les images et autres éléments sur votre serveur et à les afficher à partir de https.
Vous pouvez également essayer d'utiliser un service comme embed.ly et obtenir le contenu via eux. Ils ont un support pour obtenir le contenu derrière https.
la source
L'utilisation de Google comme proxy SSL ne fonctionne pas actuellement,
Pourquoi?
Si vous avez ouvert une page de google, vous trouverez qu'il y a un
x-frame-options
champ dans l'en-tête.(Citation de MDN)
Une des solutions
Voici mon travail autour de ce problème:
Téléchargez le contenu sur AWS S3 et il créera un lien https pour la ressource.
Remarque: définissez l'autorisation sur le fichier html pour permettre à tout le monde de le visualiser.
Après cela, nous pouvons l'utiliser comme
src
iframe sur les sites Web https.la source
Vous pouvez essayer de récupérer tout ce dont vous avez besoin avec PHP ou un autre langage côté serveur, puis placer l'iframe sur le contenu récupéré. Voici un exemple avec PHP:
scrapedcontent.php:
index.html:
la source
Tout ce que vous avez à faire est simplement d'utiliser Google comme serveur proxy.
https://www.google.ie/gwt/x?u=[YourHttpLink] .
Cela a fonctionné pour moi.
Crédits: - https://www.wikihow.com/Use-Google-As-a-Proxy
la source
Utilisez votre propre proxy inverse HTTPS vers HTTP.
Si votre cas d'utilisation concerne quelques URL qui changent rarement à intégrer dans
iframe
, vous pouvez simplement configurer un proxy inverse pour cela sur votre propre serveur et le configurer de sorte qu'unehttps
URL sur votre serveur mappe à unehttp
URL sur le serveur proxy. Puisqu'un proxy inverse est entièrement côté serveur, le navigateur ne peut pas découvrir qu'il ne parle "que" à un proxy du site Web réel, et ne se plaindra donc pas car la connexion au proxy utilise correctement SSL.Si, par exemple, vous utilisez Apache2 comme serveur Web, consultez ces instructions pour créer un proxy inverse.
la source
mitmproxy
est un outil de débogage, pas un système de proxy de production.ngrok
est un service de tunnel, principalement pour les serveurs de développement, je ne comprends pas comment cela peut être utile pour cela.