Sembra che lo scopo di window.postMessage sia quello di consentire una comunicazione sicura tra finestre / frame ospitati su domini diversi, ma in realtà non sembra consentirlo in Chrome.
Ecco lo scenario:
- Incorpora un <iframe> (con un
src
nel dominio B * ) in una pagina nel dominio A - Il <iframe> finisce per essere principalmente un tag <script>, alla fine del quale l'esecuzione ...
- Chiamo window.postMessage ( some_data , page_on_A )
Il <iframe> è decisamente nel contesto del dominio B e ho confermato che il javascript incorporato in quel <iframe> viene eseguito correttamente e chiama postMessage
con i valori corretti.
Ottengo questo messaggio di errore in Chrome:
Impossibile inviare un messaggio a A . Destinatario è di origine B .
Ecco il codice che registra un listener di eventi di messaggio nella pagina su A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
Ho anche provato a chiamare window.postMessage(some_data, '*')
, ma tutto ciò che fa è eliminare l'errore.
Mi manca solo il punto qui, window.postMessage (...) non è pensato per questo? O lo sto facendo orribilmente sbagliato?
* Mime-type text / html, che deve rimanere.