【问题标题】:Cordova 5: whitelist blocking ajax callsCordova 5:白名单阻止 ajax 调用
【发布时间】: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


    【解决方案1】:

    这个通配符在元标记中对我有用,试试吧。

    <meta http-equiv="Content-Security-Policy" content="img-src 'self' data:; default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
    

    我在 config.xml 文件中有和你一样的,所以这应该可以工作

    【讨论】:

    • 谢谢,有时间我会试试的。
    【解决方案2】:

    我自己找到了答案。

    是的,可以在不使用 CSP 功能的情况下将其列入白名单。只需将这些通配符添加到 res/xml/config.xml 文件就足够了:

    <allow-navigation href="*" />
    <access origin="*" />
    

    我的问题是另一个问题。存在白名单插件的 js 和 java 文件,但是在将配置文件升级到新格式时,我忘记为其添加功能:

    <feature name="Whitelist">
        <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" />
        <param name="onload" value="true" />
    </feature>
    

    所有人注意此答案不适用于 CLI。 &lt;feature&gt; 在此上下文中适用于 SDK 和使用 IDE 的用户。请参阅文档 The feature Element
    引用:

    如果您使用 CLI 构建应用程序,您可以使用 plugin 命令启用设备 API。这不会修改顶级 config.xml 文件,因此 &lt;feature&gt; 元素不适用于您的工作流程。

    如果您直接在 SDK 中工作并使用特定于平台的 config.xml 文件作为源,则可以使用 &lt;feature&gt; 标记来启用设备级 API 和外部插件。它们通常与特定平台的 config.xml 文件中的自定义值一起出现。

    【讨论】:

      猜你喜欢
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 2017-03-24
      • 2011-11-01
      • 2016-09-05
      • 2021-11-02
      相关资源
      最近更新 更多