跨源资源共享头能否授权X域IFRAME访问?

跨源资源共享头能否授权X域IFRAME访问?,iframe,cross-domain,same-origin-policy,cors,Iframe,Cross Domain,Same Origin Policy,Cors,当包含页面和内容页面不来自同一域时,调整IFRAME的高度以匹配其内容页面的高度 跨源资源共享(CORS)标题是否允许内容页授权跨域访问其资源,从而允许其包含的页面读取其高度?(或者,包含页面授权内容页面宣布其高度?) 或者CORS严格来说是AJAX吗?CORS不允许您这样做,但您可以使用跨文档消息传递在iFrame与其父窗口之间发送字符串,甚至在不同的域上,并使用它进行通信 大多数浏览器都支持这一点,尽管与“浏览器”不同 假设您想要的是让iframe向父页面宣布其所需高度,您可以将其放入ifr

当包含页面和内容页面不来自同一域时,调整IFRAME的高度以匹配其内容页面的高度

跨源资源共享(CORS)标题是否允许内容页授权跨域访问其资源,从而允许其包含的页面读取其高度?(或者,包含页面授权内容页面宣布其高度?)


或者CORS严格来说是AJAX吗?

CORS不允许您这样做,但您可以使用跨文档消息传递在iFrame与其父窗口之间发送字符串,甚至在不同的域上,并使用它进行通信

大多数浏览器都支持这一点,尽管与“浏览器”不同

假设您想要的是让iframe向父页面宣布其所需高度,您可以将其放入iframe代码中(未测试):

在您的包含页面中:

function onMessage (event) {
    if (event.source != theIFrameElement.contentWindow) return;
    var message = JSON.parse(event.data);
    var desiredHeight = message.height;
    var desiredWidth = message.width;   
}

if (window.attachEvent)
    window.attachEvent('onmessage', onMessage);
else if (window.addEventListener)
    window.addEventListener('message', onMessage, false);
附件是IE的,addEventListener是其他人的。出于安全目的,您可能希望检查目标源,但这只是一般的想法


EDIT:(-fsb)

支持
onmessage
的浏览器是现代浏览器吗?IE8、FF3等?这是一个浏览器支持表。我只能在我的答案中添加2个链接,因为我没有足够的重复次数。感谢浏览器支持表链接和答案。我接受它的前提是,你是对的,CORS没有帮助,但特别是因为它超越了最初的问题,提供了一个非常有用的替代方案
onmessage
值得了解。让我们看看是否可以将您的浏览器支持表添加到您的答案中。
function onMessage (event) {
    if (event.source != theIFrameElement.contentWindow) return;
    var message = JSON.parse(event.data);
    var desiredHeight = message.height;
    var desiredWidth = message.width;   
}

if (window.attachEvent)
    window.attachEvent('onmessage', onMessage);
else if (window.addEventListener)
    window.addEventListener('message', onMessage, false);