Il semble que le but de window.postMessage soit de permettre une communication sécurisée entre les fenêtres / cadres hébergés sur différents domaines, mais il ne semble pas le permettre dans Chrome.
Voici le scénario:
- Incorporer un <iframe> (avec un
src
sur le domaine B * ) dans une page du domaine A - Le <iframe> finit par être principalement une balise <script>, à la fin de l'exécution de laquelle ...
- J'appelle window.postMessage ( some_data , page_on_A )
Le <iframe> est très certainement dans le contexte du domaine B, et j'ai confirmé que le javascript intégré dans ce <iframe> s'exécute correctement et appelle postMessage
avec les valeurs correctes.
Je reçois ce message d'erreur dans Chrome:
Impossible de poster un message à A . Bénéficiaire a l' origine B .
Voici le code qui enregistre un écouteur d'événement de message dans la page sur A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
J'ai également essayé d'appeler window.postMessage(some_data, '*')
, mais tout ce que cela fait est de supprimer l'erreur.
Suis-je juste en train de manquer le point ici, window.postMessage (...) n'est-il pas destiné à cela? Ou est-ce que je le fais horriblement mal?
* Texte de type Mime / html, qu'il doit rester.