父页面位于site.com上。我的页面位于sub.site.com上,该页面将通过iframe包含在父页面中。通过将sub.site.com页面更新为site.com,可以实现https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy。但是,当我尝试这个时,由于相同的原始策略,我仍然会获得访问被拒绝的错
site.com:
<html>
<head></head>
<body><iframe src="http://sub.site.com"/></body>
</html>
sub.site.com:
<html>
<head>
<script>
function setupPage() {
try {
var oldDomain="current iframe domain: ";
oldDomain = oldDomain.concat(document.domain);
alert(oldDomain);
document.domain='sakai.rutgers.edu';
var newDomain="new iframe domain: ";
newDomain = newDomain.concat(document.domain);
alert(newDomain);
var parentDomain="parent domain: ";
parentDomain = parentDomain.concat(parent.window.document.domain);
alert(parentDomain);
}
catch (err) {
var e = "Caught error: ";
e = e.concat(err.message);
alert(e);
}
</script>
</head>
<body onload=setupPage()>
<p>Test Page</p>
</body>
当我加载父页面时,前两个警报显示正在按预期重置域。但是,当脚本尝试访问parent.window.document.domain
时,会抛出以下错误(在Chrome中):
“捕获错误:阻止具有原点”http://sub.site.com“的帧访问跨源帧。”
我错过了什么?
答案 0 :(得分:0)
我认为在您可能想要使用的代码中
parentDomain = parentDomain.concat(document.domain);
而不是
parentDomain = parentDomain.concat(parent.window.document.domain);
在第一种情况下,我猜它可用于当前窗口,因此它将获取文本并连接它。如果您需要访问父窗口,请使用类似
的内容parent.window.frames.documents............
希望有所帮助。我不是大师,但我以前遇到过这种情况,而且这种技术已经解决了这个问题。