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();

144voto

Matthew Peters Points 374

Remarque : Bien que cette solution ait pu fonctionner dans certains navigateurs lorsqu'elle a été écrite en 2014, elle ne fonctionne plus. Naviguer ou rediriger vers une URL HTTP dans un iframe intégré dans une page HTTPS n'est pas autorisé par les navigateurs modernes, même si le frame a commencé avec une URL HTTPS.

La meilleure solution que j'ai créée est simplement d'utiliser google comme proxy ssl...

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

Testé et fonctionne dans firefox.

Autres méthodes:

  • Utilisez un tiers tel que embed.ly (mais cela 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 relativement devrait faire l'affaire. Quelque chose comme: (vous pouvez utiliser n'importe quelle langue/méthode)

    https://example.com Qui a un iframe lié à...

    https://example.com/utilities/redirect.html Qui contient un simple script de redirection js comme...

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

  • Sinon, vous pourriez ajouter un flux RSS ou écrire un lecteur/analyseur pour lire le site http et l'afficher dans votre site https.

  • Vous pourriez/devriez également recommander au propriétaire du site http de créer une connexion ssl. Ne serait-ce que pour améliorer le référencement.

À moins que vous puissiez convaincre le propriétaire du site http de créer un certificat ssl, la solution la plus sécurisée et permanente serait de créer un flux RSS pour obtenir le contenu dont vous avez besoin (présupposément vous ne faites pas réellement 'quelque chose' sur le site http - c'est-à-dire que vous ne vous connectez à aucun système).

Le véritable problème est que le fait d'avoir des éléments http à l'intérieur d'un site https représente un problème de sécurité. Il n'y a pas de solutions complètement acceptables à ce risque de sécurité, donc les solutions ci-dessus sont juste des contournements actuels.

Notez que vous pouvez désactiver cette mesure de sécurité dans la plupart des navigateurs (pour vous-même, pas pour les autres). Notez également que ces 'piratages' peuvent devenir obsolètes avec le temps.

33voto

user3732323 Points 28

En fonction 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 :

  • Préparez votre serveur proxy - installez IIS, Apache
  • Obtenez un certificat SSL valide pour éviter les erreurs de sécurité (gratuit depuis startssl.com par exemple)
  • Écrivez un wrapper, qui téléchargera le contenu non sécurisé (comment faire ci-dessous)
  • Depuis votre site/application, récupérez https://yourproxy.com/?page=http://insecurepage.com

Si vous téléchargez simplement le contenu d'un 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 des expressions régulières et les remplacer également. Les images sont difficiles à résoudre, mais j'ai trouvé une solution de contournement ici : http://foundationphp.com/tutorials/image_proxy.php

31voto

David R. Points 674

Je sais que c'est un ancien post, mais une autre solution serait d'utiliser cURL, par exemple :

redirect.php :

`

ensuite dans votre balise iframe, quelque chose comme :

Ceci n'est qu'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 fichier redirect.php à leurs propres fins. Tenez compte de ces choses dans le contexte de votre propre site.

L'avantage, cependant, est qu'il est plus flexible. Par exemple, vous pourriez 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, tester pour vous assurer que ce n'est pas un 404, et avoir un contenu alternatif prêt si c'est le cas.

De plus - je suis un peu méfiant des redirections Javascript pour quelque chose d'important.

Santé !

`

21voto

user2523022 Points 275

8voto

Addeladde Points 68

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. C'est délicat si vous voulez incorporer des éléments 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 est de charger le contenu côté serveur et d'enregistrer les images et autres éléments sur votre serveur et de les afficher en https.

Vous pouvez également essayer d'utiliser un service comme embed.ly et récupérer le contenu à travers eux. Ils ont un support pour obtenir le contenu derrière https.

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