不安全的JavaScript尝试使用URL访问框架。它是本地的

时间:2011-08-22 15:27:19

标签: jquery iframe webkit mobile-webkit

我正在使用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。我也是不想在互联网上部署我的应用程序。还有其他选择来解决这个问题吗?我不需要在浏览器上做任何修改就更好了。谢谢。

1 个答案:

答案 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。