Sembra che il punto di window.postMessage consenta la comunicazione sicura tra finestre/frame ospitati su domini diversi, ma in realtà non sembra che consenta in Chrome.Come si usa window.postMessage attraverso i domini?
Ecco lo scenario:
- incorporare un <iframe> (con un
src
sul dominio B *) in una pagina sul dominio A - Il <iframe> finisce per essere per lo più uno script <Tag>, al termine del quale è in esecuzione ...
- Io chiamo window.postMessage (some_data, page_on_A)
Il <iframe> è sicuramente nel contesto di dominio B, e ho confermato che il JavaScript incorporato in quel <iframe> esegue correttamente e chiama postMessage
con i valori corretti.
ricevo questo messaggio di errore in Chrome:
Impossibile inviare un messaggio a A. Il destinatario ha origine B.
Ecco il codice che registra un messaggio di evento ascoltatore in 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 è sopprimere l'errore.
Mi manca solo il punto qui, window.postMessage (...) non è pensato per questo? O sto semplicemente sbagliando?
* Mime-type text/html, che deve rimanere.
si sono probabilmente consapevoli di questo già, ma MDC ha un ottimo resoconto su postMessage: https://developer.mozilla.org/en/DOM/window.postMessage Per l'implementazione FF ovviamente, ma forse c'è qualcosa che spiega perché non funziona. –