文件的同源策略-iFrames问题

时间:2019-10-07 10:33:12

标签: javascript html security

我目前正在为文件的同源政策而苦苦挣扎:我的一个完全基于文件的项目已经工作了多年,直到政策改变为止。该项目包含index.html:

<html>
  <body>
    <table>
      <tbody>
        <tr>
          <td>
            <iframe id="frame1" src="frame1.html" width="220" height="450"></iframe> 
          </td>
          <td>
            <iframe id="frame2" src="frame2.html" width="850" height="450"></iframe>
          </td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

以及另外两个作为iframe包含的文件(frame1.html和frame2.html)。在frame1.html和frame2.html中,我执行以下javascript调用:

parentWindow = window.parent;
var frames = parentWindow.frames;  

为了通过

访问另一帧的数据
frames[x].

接着是所需的属性。

根据https://developer.mozilla.org/en-US/docs/Archive/Misc_top_level/Same-origin_policy_for_file:_URIs,它应该起作用,因为两个框架的祖先都使用index.html,但是(例如,在Firefox中)我收到此错误消息:

SecurityError:拒绝访问跨域对象上的属性的权限

有人可以帮忙吗?我可能必须删除iframe吗?任何提示表示赞赏!

非常感谢, 最好

亚历克斯

1 个答案:

答案 0 :(得分:-1)

与直接iframe访问有关的所有操作均失败,但是,我找到了一种对我来说很有效的替代方法:我不是使用iframe之间的直接通信,而是使用父级作为中继。在这种情况下,我通过以下方式发送消息

equals
从父级iframe中

将其转发到目标iframe。通过侦听器在父级和iframe处接收消息:

window.top.postMessage(['destinationIframe','desiredFunction',data1,..,dataX],'*');