Parece que el objetivo de window.postMessage es permitir la comunicación segura entre ventanas / marcos alojados en diferentes dominios, pero en realidad no parece permitir eso en Chrome.
Este es el escenario:
- Incrustar un <iframe> (con a
src
en el dominio B * ) en una página en el dominio A - El <iframe> termina siendo principalmente una etiqueta <script>, al final de la cual se ejecuta ...
- Llamo window.postMessage ( some_data , 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 llama postMessage
con los valores correctos.
Recibo este mensaje de error en Chrome:
No se puede enviar mensaje a una . Destinatario tiene origen B .
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 intenté llamar window.postMessage(some_data, '*')
, pero todo lo que hace es suprimir el error.
¿Me estoy perdiendo el punto aquí, window.postMessage (...) no está destinado a esto? ¿O simplemente lo estoy haciendo horriblemente mal?
* Texto / html tipo mimo, que debe permanecer.