我的文件file:///C:/index.html
里面有一个iframe:
<iframe id="folder_browser" src="file:///C:/Files/"></iframe>
Files
文件夹的内容加载到iframe但我无法通过javascript或jquery访问它们。我该怎么办?
我试过$('#folder_browser').contents().find('body').html();
但没有运气!
答案 0 :(得分:1)
原因&#34;同源政策&#34;您无法在这种情况下获取iframe的内容,也不会获得域中的主页和来自其他域的iframe文档。
&#34;同源政策&#34;浏览器应用于网页以防止相互通信的一组限制。这些限制可防止互联网网站出现许多安全问题,例如使用类似这样的技巧访问存储在本地计算机上的私人数据。
然而,有一些方法(和条件)可以绕过这些限制:
但是,只有当两个页面都在同一个域中并且通过修改两个html页面的内容(特别是它们的javascripts)时才有可能这样,因此页面可以授权彼此通信。只有在父页面和iframe子页面都是网页时才能执行此操作:在这种情况下,地址 file:/// C:/ something / 不是网址,而是本地目录。
可以找到一些有关同源策略的有趣教程 在
和
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输入类型文件获取文件(通过用户的交互),这是一个工作示例:
container-fluid
&#13;
container
&#13;