¿Cómo se usa window.postMessage en todos los dominios?
Parece que el punto dewindow.postMessage es permitir una comunicación segura entre ventanas / marcos alojados en diferentes dominios, pero en realidad no parecepermitir eso en Chrome.
Aquí está el escenario:
Incrustar un <iframe> (con unsrc
en el dominio B*) en una página en el dominio AEl <iframe> termina siendo principalmente una etiqueta <script>, al final de la cual se ejecuta ...Llamo a window.postMessage (algunos datos, page_on_A )El <iframe> está definitivamente en el contexto del dominio B, y he confirmado que el javascript incrustado en ese <iframe> se ejecuta correctamente y llamapostMessage
con los valores correctos.
Recibo este mensaje de error en Chrome:
No se puede publicar el mensaje enA. El destinatario tiene origenB.
Aquí está el código que registra un detector de eventos de mensajes en la página de A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
También he intentado llamarwindow.postMessage(some_data, '*')
, pero todo lo que hace es suprimir el error.
¿Me estoy perdiendo el punto aquí, es window.postMessage (...) no destinado para esto? ¿O simplemente lo estoy haciendo terriblemente mal?
* Mime-type text / html, que debe permanecer.