Кажется, что пункт window.postMessage - обеспечить безопасную связь между окнами/кадрами, размещенными на разных доменах, но это не так на самом деле, похоже, это разрешено в Chrome.
Здесь сценарий:
- Вставить <iframe> (с
src
в домене B *) на странице в домене A - <iframe> заканчивается в основном <script> тег, в конце которого выполняется...
- Я вызываю window.postMessage(some_data, page_on_A)
<iframe> наиболее определенно в контексте домена B, и я подтвердил, что встроенный javascript в этом <iframe> выполняется правильно и вызывает postMessage
с правильными значениями.
Я получаю это сообщение об ошибке в Chrome:
Невозможно отправить сообщение A. Получатель имеет происхождение B.
Здесь код, который регистрирует прослушиватель событий сообщения на странице A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
Я также пробовал вызывать window.postMessage(some_data, '*')
, но все, что делает это, подавляет ошибку.
Я просто пропустил здесь пункт, это window.postMessage(...), не предназначенное для этого? Или я просто делаю это ужасно неправильно?
* Mime-type text/html, который он должен оставаться.