"Piloter" une iframe ?

Fermé
Leghe59 Messages postés 34 Date d'inscription mercredi 14 juin 2017 Statut Membre Dernière intervention 17 avril 2021 - 1 nov. 2020 à 16:48
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 1 nov. 2020 à 19:03
Bonjour,

J'ai créé une carte sur umap (https://umap.openstreetmap.fr/fr/map/nos-livres-en-vadrouille_495665#4/58.56/1.45), que j'ai intégré par iframe sur un wordpress (https://www.leslibrairesvoyageurs.fr/.
Est-il envisageable d'appeler dans mon menu wordpress le champ "recherche" de l'iframe ?

1 réponse

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
1 nov. 2020 à 19:03
Bonjour,

Par défaut, cela n'est pas autorisé pour des raisons de sécurité.

Si cela était permis, cela signifierait qu'un site quelconque (potentiellement géré par une personne malveillante) pourrait charger un autre site via une iframe et récupérer les informations sur cet autre site, tel qu'il est chargé par le visiteur.

Un exemple concret : le site https://example.com/ pourrait charge https://www.facebook.com/ et donc, en accédant à https://example.com/, le site example.com pourrait lire les flux d'actualités Facebook de ses visiteurs + toutes les autres informations sensibles (discussions, réglages, ...).

Par défaut, les navigateurs autorisent cela seulemnt si la page parent et la page enfant ont la même "origine" (same origin policy).
Une même origine signifie : même protocole, même nom d'hôte et même port.

Donc https://example.com/page1.html peut charger https://example.com/page2.html et lire le contenu sur page2.html. Mais https://example1.com/ ne peut pas lire une page sur https://example2.com/ via l'iframe.

Si https://example1.com/ veut charger une page sur https://example2.com/, alors l'administrateur de example2.com doit explicitement autoriser example1.com via les entêtes Access-Control-Allow-Origin.

Il faut bien comprendre que c'est une sécurité implémentée par le navigateur pour protéger le visiteur. Sans celle-ci, le surf en ligne serait un champ de mines !

Pour plus d'informations : https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Mais une fois ce problème de "cross origin" résolu (lorsque c'est possible), alors oui, une page parent peut gérer un formulaire dans une page enfant :
https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/contentWindow
https://benohead.com/blog/2015/12/07/cross-document-communication-with-iframes/
0