Parece que o objetivo de window.postMessage é permitir a comunicação segura entre janelas / frames hospedados em domínios diferentes, mas na verdade não parece permitir isso no Chrome.
Este é o cenário:
- Incorpore um <iframe> (com um
src
no domínio B * ) em uma página no domínio A - O <iframe> acaba sendo principalmente uma tag <script>, no final da execução ...
- Eu chamo window.postMessage ( some_data , page_on_A )
O <iframe> está definitivamente no contexto do domínio B, e eu confirmei que o javascript embutido naquele <iframe> é executado corretamente e chama postMessage
com os valores corretos.
Recebo esta mensagem de erro no Chrome:
Não é possível para postar mensagem para A . Destinatário tem origem B .
Este é o código que registra um listener de evento de mensagem na página A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
Também tentei ligar window.postMessage(some_data, '*')
, mas tudo o que faço é suprimir o erro.
Estou apenas perdendo o ponto aqui, window.postMessage (...) não foi feito para isso? Ou estou apenas fazendo terrivelmente errado?
* Mime-type text / html, que deve permanecer.