我正在用phonegap构建一个jQuery移动应用程序。当我试图访问iframe(也许是webkit)中的页面时,存在Unsafe JavaScript attempt to access frame
的问题。这两个框架页和父页都在本地,这是开始与file:///
。我知道哪里是这样的问题不安全的JavaScript试图访问框架在谷歌浏览器,但我不能在我的手机上passing the --allow-file-access-from-files switch at startup
。我也不想在互联网上部署我的应用程序。还有其他解决办法吗?如果我不需要在浏览器上做任何修改就好了。谢谢。
我不确定Webkit是否遵循相同的规则,但有先例。
https://developer.mozilla.org/en/Same-origin_policy_for_file%3a_URIs在Gecko 1.8或更早版本中,任意两个file: uri被认为是相同的同源。换句话说,本地磁盘上的任何HTML文件都可以读取本地磁盘上的任何其他文件
从Gecko 1.9开始,文件只允许读取某些其他文件文件。具体来说,一个文件只能读取另一个文件的父文件对象的祖先目录目标文件。但是,目录不能以这种方式加载。
例如,如果你有一个文件foo.html访问另一个文件,Bar.html,只有Bar.html在相同的情况下加载才会成功目录中的foo.html或包含在同一目录中的其他目录目录为foo.html.
此策略影响所有同源检查,包括XMLHttpRequest, XSLT和XBL。
对于跨窗口DOM访问,每个文件被视为一个单独的文件有一个例外:如果一个文件是从另一个文件加载的否则就可以按照同源策略加载它,它们被认为是同源的。这种负载可能会发生通过子框架、链接、位置集、调用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严格执行同源策略。