我正在使用 2 个本地域,localhost
并使用来自两个域domain1
的 iFrame 来测试系统。postMessaging
我可以正确识别相应的window
元素(在两个域上)以发送消息和接收回复。我的问题是,在我的 postMessage 中发送的第二个参数(我从中发送消息的 URL)未被相应其他域上的侦听器接受。仅当我将发件人声明为 时"*"
,我的消息传递才有效。
这不起作用向外部域发送消息:
// targetWindow = window of foreign domain
targetWindow.postMessage({
"foo": "bar"
}, window.location.href);
这有效:
// targetWindow = window of foreign domain
targetWindow.postMessage({
"foo": "bar"
}, "*");
对发送域的回复也一样(使用window.top
)。这不起作用:
window.top.postMessage({
"baz": "bam"
}, window.location.href.split("?")[0]);
虽然这样做:
window.top.postMessage({
"baz": "bam"
}, "*");
问:
为什么会这样?我想我必须提供send-url作为第二个参数来启用身份验证。如果是这样,为什么我的事件没有触发?我在 localhost/domain1 上工作的原因是什么?
感谢帮助!