我正在尝试使用 postMessage 在页面(在 example1.com 上)和在 example2.com 上的同一页面上的 iframe 之间进行跨域通信
当 iframe 完成加载后,它会使用以下命令向父页面发送 postMessage:
parent.postMessage('你好父母', 'http://example1.com'); //这个命令有效
在父页面(example1.com)中 postMessage 的事件处理程序中,我使用以下函数将响应发送回子页面(example2.com):
//this function is defined in example1.com:
function receiveMessage(event){
if (event.origin == "http://example2.com"){
console.log('Message Received from iframe'); //this line works
event.source.postMessage('hello to you too', event.origin); //this line does not work
}
}
由于某种原因,未触发 iframe 中 postMessage 的事件处理程序。
//this function is defined in example2.com
function receiveMessage(event){
if (event.origin == "http://example1.com"){ // I even tried removing this check to no avail
console.log('Message Received from parent'); //this line works
}
}
当父级尝试向 iframe 发送消息时,它只会返回 undefined。
任何帮助表示赞赏!
编辑:
我尝试在 example1.com 的 receiveMessage 事件中更改以下行:
event.source.postMessage('你也好', event.origin);
对此:
event.source.postMessage('你也好', 'http://example2.com');
但我收到以下错误:
无法将消息发布到http://example2.com。收件人来源http://example1.com
为什么 event.origin在收到来自 example2.com 的消息时评估为http://example1.com ?
example1.com 正在尝试向自己发送 postMessage。这应该是错误的根源