我实现了跨域IFrame。 在我的主页上,我正在使用此功能:
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
var origin = event.origin || event.originalEvent.origin;
if (origin !== "https://www.domain.xy" && origin !== "https://domain.xy")
return;
$('#gbook').height(event.data + 30);
}
在IFrame内部应使用的页面上,我实现了以下代码:
var height= getAbsoluteHeight('body');
parent.postMessage(
height,
"https://www.domain.xy"
);
现在,当我使用URL“ https://www.domain.xy”打开页面时,一切正常。但是,一旦我尝试通过“ https://domain.xy”(不带“ www。”)打开它,浏览器就会抛出异常:
Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://www.domain.xy') does not match the recipient window's origin ('https://domain.xy').
我已经通过发布两条消息(一条消息发送到“ https://domain.xy”,一条消息发送到“ https://www.domain.xy”)来解决该问题。这样做的结果是相同的错误,但至少可以正常工作。
对此有适当的解决方案吗?