Здається, сенс window.postMessage полягає у забезпеченні безпечного спілкування між вікнами / фреймами, розміщеними в різних доменах, але насправді це, здається, не дозволяє цього в Chrome.
Ось сценарій:
- Вбудуйте <iframe> (з a
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-тип тексту / html, який він повинен залишатись.