Postmessage是否在同一域下的各个网页之间工作?如果是这样,怎么样?

时间:2013-12-25 05:46:20

标签: html5 postmessage

在我的代码中,我有这个:

<script>
var iframe = document.getElementById("some_iframe").contentWindow; //sending part
iframe.postMessage("X", 'http?://example.com');
</script>

在接收页面上,我有

<script>
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) { alert(e.data); } // no security concerns here, just the message is needed
</script>

当我查看发送页面的控制台时,我收到此错误: 无法将消息发布到http?://example.com。收件人来源http://www.example.com

不能发布两个以上的链接,不管怎样我放了?就在http之后。实际上并不在代码中。

实际上,我认为我找到了答案。这很微妙,但www是什么干扰,对吧?但是,确定,可以使用postMessage在同一服务器上的两个文档之间进行通信?

一些示例代码也很棒。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以详细了解postMessage的工作原理以及在此tutorial中处理相同或跨域和沙盒时的怪癖。有关基本参考,请参阅此article

简而言之,您可以在任意两个窗口之间执行postMessage,无论域名是什么。

现在我想起来,为了清楚起见,两个窗口都必须在同一个文档树下打开,这意味着它们必须有一个共同的父文档(就像在同一设备上的同一个浏览器选项卡中)。我不确定你是否认为你可以在不同的浏览器或标签或设备上实现这一点,但事实并非如此,你必须查看web-socket和webRTC,因为这是一个完全不同的功能。