【发布时间】:2016-02-24 12:05:26
【问题描述】:
我正在将一些项目从旧版 Cordova 2.x 和 3.x 升级到最新版本 5.1。 我不得不这样做,因为 Google Play 将在 5 月劫持 4.1.1 之前的 Cordova 应用(没有新的提交,也没有对现有应用的更新)。
我正在升级的旧项目在白名单中允许所有 URL。我在 WebView 中加载的页面包含在 apk 资产中,但对某些远程资源 URL 进行 ajax 调用的操作至关重要。这些资源是由客户公司在各种领域发布的,由于有成千上万的资源,因此将其列入白名单是不切实际的。
现在使用 Cordova >4,无论您喜欢与否,您都必须下载 whitelist plugin。 在新的 config.xml 文件中,我有:
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />
但这似乎还不够。 logcat 中有一些关于必须修改我的 HTML 以包含 Content Security Policy 的警告。
所以我将这个添加到我的页面:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
现在我遇到了一个问题,因为旧版应用程序与 JellyBean 设备兼容,但只有 KitKat 设备支持白名单插件 CSP 功能。
尽管如此,我已经在 Lollipop 设备中测试了升级后的应用程序,并且 ajax 调用一直被阻止。
有没有办法在不使用 CSP 的情况下将所有可能的域列入白名单,以便我可以在 JellyBean 中运行我的应用程序?
如果不是,什么是限制最少的内容安全警察?显然通配符不起作用。
【问题讨论】:
标签: android ajax cordova content-security-policy whitelist