我正在使用phonegap构建一个jQuery移动应用程序。
当我尝试访问iframe(也许是webkit)中的页面时,存在Unsafe JavaScript attempt to access frame
的问题。框架页面和父页面都在本地,从file:///
开始。我知道这样的问题在哪里Unsafe JavaScript attempt to access frame in Google Chrome但我手机上不能passing the --allow-file-access-from-files switch at startup
。我也是不想在互联网上部署我的应用程序。还有其他选择来解决这个问题吗?我不需要在浏览器上做任何修改就更好了。谢谢。
答案 0 :(得分:2)
我不确定Webkit是否遵循相同的规则,但有一个先例。
https://developer.mozilla.org/en/Same-origin_policy_for_file%3a_URIs
在Gecko 1.8或更早版本中,任何两个文件:URI都被认为是 同源。换句话说,本地磁盘上的任何HTML文件都可以 读取本地磁盘上的任何其他文件。
从Gecko 1.9开始,允许文件只读取其他文件 文件。具体来说,只有父文件才能读取另一个文件 原始文件的目录是的祖先目录 目标文件。但是,无法以这种方式加载目录。
例如,如果你有一个文件foo.html访问另一个文件, bar.html,只有当bar.html相同时,加载才会成功 目录为foo.html或包含在其中的目录中 目录为foo.html。
此政策会影响进行同源检查的任何内容,包括 XMLHttpRequest,XSLT和XBL。
对于跨窗口DOM访问,每个文件都被视为一个单独的文件 origin,有一个例外:如果从另一个文件加载文件 否则将能够按照同源政策加载它, 它们被认为具有相同的起源。可能会发生此负载 通过子帧,链接,位置集,调用window.open()或者 等。
例如,如果文件/home/user/foo.html是框架集和其中一个 框架是/home/user/subdir/bar.html,框架和框架集是 被认为是共享相同的起源。另一方面,如果文件 /home/user/subdir/foo.html是一个框架集,框架是 /home/user/bar.html,框架和框架集被认为具有 不同的起源。
新的security.fileuri.strict_origin_policy首选项,其中 默认为true,如果用户不想,可以设置为false 在文件上严格执行相同的原始政策:URI。