Parece que el punto de window.postMessage es permitir la comunicación segura entre ventanas/marcos alojados en diferentes dominios, pero en realidad no parece permitir que en Chrome.¿Cómo se usa window.postMessage en todos los dominios?
Este es el escenario:
- Insertar un <iframe> (con un
src
el dominio B *) en una página en el dominio A - El <iframe> termina siendo sobre todo un guión < > etiqueta, al final de la cual es la ejecución ...
- llamo window.postMessage (some_data, page_on_A)
El <iframe> es sin duda en el contexto del dominio B, y he confirmado que el javascript incrustado en que <iframe> ejecuta correctamente y llama postMessage
con los valores correctos.
me sale este mensaje de error en Chrome:
No se puede enviar mensaje a Un. El destinatario tiene origen B.
Aquí está el código que registra un evento de escucha de mensajes en la página en la A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
También he intentado llamar window.postMessage(some_data, '*')
, pero todo lo que hace es suprimir el error.
¿Me falta el punto aquí, es window.postMessage (...) no destinado para esto? ¿O lo estoy haciendo horriblemente mal?
* texto tipo Mime/html, que debe permanecer.
Usted es probablemente consciente de esto ya, pero MDC tiene una excelente resumen en postMessage: https://developer.mozilla.org/en/DOM/window.postMessage Obviamente, para la implementación de FF, pero tal vez haya algo allí que explique por qué no funciona. –