1

我正在使用创建 HTTP 服务器的 NODE JS 模块。服务器的响应是一个包含 JavaScript 的页面,该页面在 . 这是响应代码:

<html>
<head>
<script type='text/javascript'>
function test() {
document.body.innerHTML='<iframe id="ifool" src="URL" sandbox="allow-same-origin allow-forms allow-scripts"> </iframe>';
var c;                 
window.setInterval(function(){
c=document.getElementById("ifool").contentWindow.location.href; 
window.history.pushState(0,0,c);  
},100);
</script>
</head>
<body onload= "test()">
</body>
</html>

我正在使用带有 FF 的 Firebug。我收到以下错误:

 Error: Permission denied to access property 'href'
    c=document.getElementById("ifool").contentWindow.location.href;
4

1 回答 1

3

如果您尝试在 iframe 中访问的 URL 位于当前页面域之外,那么您将无法访问。现代浏览器实现了同源策略,该策略在运行跨站点脚本时决定 JavaScript 的权限。

当父母和孩子来自同一个域时,他们可以相互访问;子进程可以访问和操作父进程的属性和方法,反之亦然。但是,当他们不这样做时,尝试此类访问将触发脚本错误,指示权限被拒绝。

如果我尝试使用指向节点服务器托管的页面的页面和 iframe 源运行类似的脚本,则不会出现权限错误。

资料来源:

  1. http://www.esqsoft.com/javascript_examples/iframe_talks_to_parent/
  2. 错误:访问属性“文档”的权限被拒绝
  3. 从 iframe 访问父 URL
  4. <iframe> javascript 跨域访问父 DOM?
于 2013-03-29T17:28:42.750 回答