当我搜索并使用faroo移动到其他网页时,我正在使用iframe加载faroo.com作为默认src帧。但是仍然在iframe src中显示faroo.com只有我想要捕获的页面的网址在iframe中加载
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(function(){
$('#frameid').load(function(){
var z=$('#frameid').attr('src');
console.log('hi '+z);
});
$('#clicked').on('click', function(){
$('#frameid').attr('src', 'http://www.faroo.com/');
});
});
</script>
</head>
<body>
<iframe width="100%" height="500px" id="frameid" src="" name="iframe_a" ></iframe>
<p><input type="button" value="click me!" id="clicked"></p>
</body>
</html>
console.log上的o / p始终是faroo.com而不是当前已加载的网站
答案 0 :(得分:13)
为了安全起见,只要iframe的内容和引用的javascript托管在同一个域中,您就可以检索该URL。
如果是这种情况,您可以执行以下操作:
document.getElementById("frameid").contentWindow.location.href
如果这两个域不同,那么您将拥有适用于cross-site reference scripting域的所有限制。例如:
document.getElementById("frameid").src = 'http://www.google.com/';
alert(document.getElementById("frameid").documentWindow.location.href);
Error: Permission denied to get property Location.href
当然(除非您在浏览器中发现一些巨大的安全漏洞),您只需使用父文档中的javascript
无法实现所需内容。让我们看一个简单的例子 why 。如果浏览器允许您所需,您可以轻松地:
http://malicous.com/dont-trust
)http://insecure-web-site.com/redirectlogin
)答案 1 :(得分:1)
似乎有一个黑客来完成这项工作,我实际上无法相信它甚至被允许。这就是它的工作方式:
1)更改域名以匹配iframe:
field1
2)获取如下网址:
AutoField
在我看来,这不应该有效,但确实如此。我在Safari,Chrome和Firefox中测试了以下内容,截止日期为02/01/2017:
主要:http://subdomain.website.com iframe:http://www.website.com
你怎么看?这是永久允许的,还是一个即将修补的疏忽?我在这里开始讨论有关浏览器安全性的另一个讨论线程。
Isn't This A Serious Browser Security Issue? RE: Cross-Domain iframe Hack
对于特定情况,似乎总是支持这种情况。
https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy