Javascript et les mêmes iframes d'origine

Est-il possible de lire / modifier le contenu de l'iframe (non seulement des propriétés comme src) avec des scripts en page mais en dehors de cette image? Je sais que c'est impossible si la source provient d'un autre site, car il s'agirait d'un gros trou de serre, mais je ne demande que s'il fonctionne pour d'autres contenus provenant de la même origine.

Pour ajouter à ce qui a déjà été dit sur l'interaction avec les iframes chargés dans le même domaine:

Le navigateur vous permettra d'interagir avec des iframes (ou des images) tant que la page qui essaie de faire l'interaction et la page que vous avez chargée ont le même document.domaine.

Vous pouvez définir le document.domaine sur un suffixe de l'hôte sur lequel vous avez été chargé. Par exemple, si vous avez une page chargée à partir de blog.fred.com et qu'elle veut interagir avec un service appelé jsonservice.fred.com, les deux pages devront faire

document.domain = 'fred.com'; 

Avant que javascript ne puisse interagir avec l'autre.

Les navigateurs sont assez intelligents pour ne pas vous permettre de définir votre document.domaine sur '.com', au cas où vous vous demandiez …

Oui, vous pouvez le faire si l'emplacement de l'iframe et la page parent sont du même hôte (même politique d'origine).

Pour vous assurer que le navigateur vous permettra de le faire, vous pouvez utiliser

 document.domain = "example.com" 

Sur la page parentale et dans l'iframe. (Notez que le sous-domaine.example.com et example.com sont différents)

Méthode Dom pour ce faire (page parent vers iframe):

 document.getElementById("myiframe").contentWindow.document.getElementById("divinframe").innerHTML = "I'm on the inside."; 

document.getElementById("myiframe").contentWindow.someFunctionInsideIframe();

ContentWindow est la réponse et fonctionne dans presque tous les navigateurs modernes, certainement chrome, c'est-à-dire 7 + etc.

Pour aller dans l'autre sens (iframe vers la page parent):

 top.document.getElementById("DivInTopParent") 

Si le contenu iframe provient du même domaine, vous pouvez l'accéder en utilisant frames.myiframe.getElement...

Le navigateur limite uniquement l'accès au contenu iframe / parent pour un contenu qui ne provient pas du même domaine. Pour les demandes du même domaine, vous pouvez accéder au contenu via window.parent ou via myiframe.document.getElementById

Ce n'est pas exactement une solution client / javascript, mais cela m'a aidé à résoudre le problème.

Vous devez supprimer l'en X-Frame-Options tête X-Frame-Options , s'il y a lieu, et plutôt envoyer le suivant pour la page iframe:

 Content-Security-Policy: frame-ancestors 'self' example.com *.example.com 

Et un autre pour IE:

 X-Content-Security-Policy: frame-ancestors 'self' example.com *.example.com