我正在使用NODE JS模块,我正在创建一个HTTP服务器。服务器的响应是一个包含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;
答案 0 :(得分:3)
如果您尝试在iframe中访问的网址超出当前网页域名,那么您将无法执行此操作。现代浏览器实现Same Origin Policy,在运行跨站点脚本时决定JavaScripts的权限。
当父母和孩子来自同一个域时,他们可以互相访问;孩子可以访问和操作父母的属性和方法,反之亦然。但是,当他们不这样做时,尝试这样的访问将触发脚本错误,指示权限被拒绝。
如果我尝试使用指向由节点服务器托管的页面的页面和iframe源运行类似的脚本,则不会出现权限错误。
来源: