IE9”;访问被拒绝”;访问IFrame时出错

IE9 "Access is Denied" Error, When Accessing IFrame

本文关键字:访问 出错 IFrame IE9 拒绝      更新时间:2023-09-26

我的计算机(localhost)上有一个html页面(test.html)。在该页面的iframe中,我加载了abc.example.com

我想从另一个域xyz.example.com访问iframe abc.example.com的内容。以下是我迄今为止所尝试的:

//test.html in abc.example.com
<input type="textbox" />
<input type="submit" value="click_me" />
//Start.html in xyz.example.com
<script type="text/javascript">
  $(document).ready(function() {
    $("#ok").click(function() {
      //using javascript
      var oo = document.getElementById("myFrame");
      document.getElementById("divFrame").innerHTML = 
        oo.contentWindow.document.body.innerHTML;   
    });
  });
</script>
<iframe id="myFrame" src="http://localhost/exam/test.html"></iframe>
<div id="divFrame"></div>
<input type="submit" id="ok" />

但当我按下"ok"按钮时,它会抛出一个"Access is Denied"错误。当使用jQuery模拟iframe:中的点击时,我也得到了同样的错误

var btn = window.frames[0].document.getElementsByName('click_me');
btn[0].click();

在JavaScript中,您无法访问不同域上的帧。它被称为同源政策。如果允许的话,你可以打开一个隐藏的框架来加载facebook和google+,窃取每个人的信息!

在某些情况下,有一种绕过同源策略的方法,但您需要明确地将域列入白名单。就像使用跨来源资源共享时一样。因此,可以动态地(AJAX/XMLHTTPRequest)从另一个域获取数据,但也必须控制另一个领域。