访问本地文件的iframe内容

时间:2014-03-12 19:34:22

标签: javascript jquery html iframe

我的文件file:///C:/index.html里面有一个iframe:

<iframe id="folder_browser" src="file:///C:/Files/"></iframe>

Files文件夹的内容加载到iframe但我无法通过javascript或jquery访问它们。我该怎么办?

我试过$('#folder_browser').contents().find('body').html();但没有运气!

1 个答案:

答案 0 :(得分:1)

原因&#34;同源政策&#34;您无法在这种情况下获取iframe的内容,也不会获得域中的主页和来自其他域的iframe文档。

&#34;同源政策&#34;浏览器应用于网页以防止相互通信的一组限制。这些限制可防止互联网网站出现许多安全问题,例如使用类似这样的技巧访问存储在本地计算机上的私人数据。

然而,有一些方法(和条件)可以绕过这些限制:

  1. window.document.domain变量操作
  2. 代理
  3. 跨文档消息传递
  4. 但是,只有当两个页面都在同一个域中并且通过修改两个html页面的内容(特别是它们的javascripts)时才有可能这样,因此页面可以授权彼此通信。只有在父页面和iframe子页面都是网页时才能执行此操作:在这种情况下,地址 file:/// C:/ something / 不是网址,而是本地目录。

    可以找到一些有关同源策略的有趣教程 在

    Bypass Same Origin Policy

    Same-origin policy for file: URIs

    在最后一篇文章中,您可以阅读&#34;如果用户不这样做,则新的 security.fileuri.strict_origin_policy 首选项(默认为true)可以设置为false希望在文件上严格执行相同的原始政策:URI。&#34;

    另一个有趣的信息资源是:

    Bypassing the Same-Origin-Policy For Local Files During Development

    我在其中找到了以下可能有用的提示:

      

    完全解决问题的唯一真正的跨浏览器解决方案是使用本地Web服务器提供内容,以便您可以通过HTTP访问它。

    换句话说,您必须在计算机中安装网络服务器软件,并将其配置为在http:///yourlocalwebserverdirectory等地址下提供文件。

    然而,您可以使用html输入类型文件获取文件(通过用户的交互),这是一个工作示例:

    &#13;
    &#13;
    container-fluid
    &#13;
    container
    &#13;
    &#13;
    &#13;