访问IFrame时IE9“访问被拒绝”错误

时间:2012-08-20 18:09:36

标签: javascript jquery cross-domain

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

我想从其他域abc.example.com访问iframe xyz.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" />

但是当我按下“确定”按钮时,它会抛出"Access is Denied"错误。使用jQuery模拟iframe中的点击时,我也会遇到同样的错误:

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

1 个答案:

答案 0 :(得分:4)

在JavaScript中,您无法访问其他域上的框架。它被称为Same origin Policy。例如,如果允许,您可以打开一个隐藏的框架来加载Facebook和谷歌+并窃取每个人的信息!

在某些情况下,存在围绕相同原始策略的方法,但您需要明确地将域列入白名单。就像使用Cross-origin resource sharing时一样。因此,动态(AJAX / XMLHTTPRequest)可以从另一个域获取数据,但您也必须控制另一个域。