【问题标题】:Whitelisting URL's in Phonegap for Android Lollipop 5.0在 Phonegap for Android Lollipop 5.0 中将 URL 列入白名单
【发布时间】:2015-10-21 14:39:26
【问题描述】:

这让我大发雷霆,迫不及待地开始在 Android 5.* 中进行测试,所以就这样吧。

首先是我所拥有的:

config.xml

<access origin="*.google.com"/>
<access origin="*.gstatic.com"/>
<access origin="*.googleapis.com"/>
...
<plugin name="cordova-plugin-whitelist" version="1" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />

index.html

<head>
    ...


    <meta   http-equiv="Content-Security-Policy" 
            content="default-src 'self' https://*.google.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
    <meta   http-equiv="Content-Security-Policy" 
            content="default-src 'self' https://*.gstatic.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
    <meta   http-equiv="Content-Security-Policy" 
            content="default-src 'self' https://*.googleapis.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">

我发现here 描述了相同的问题,并尝试将找到的建议与PhoneGap Documentation 的其他建议合并,但尚未成功。

为了更具体地解决这个问题,我试图允许的资源是 Google Maps V3。我确定我遗漏了一些小东西,我会很感激任何事情,甚至是一个简单的建议。

谢谢!

更新 1

很好,@Fido,但不幸的是,这已被证明不是唯一的问题。我现在使用记录在 here 中的 PhoneGap 插件,并在我的 config.xml 中替换,但没有改进。我注意到的有趣的事情是该插件没有显示在项目的插件摘要中(我现在发现它存在)。所以,我想说的是,尽管有文档,但它可能无法按照它描述的那样提取这个资源。

我会给任何人提出任何额外建议的机会,但最终我可能不得不硬着头皮按照 Fido 的建议进行本地构建。

更新 2

事实证明,我没有正确地将我的 config.xml 推送到存储库,所以它现在反映我正在使用 whitelist plugin provided by Corova,但没有帮助。在我构建本地并使用其他建议的插件之前,我会看看是否有任何插件。

更新 3

好消息;我可以从here 指定同一个插件的 NPM 包:

&lt;gap:plugin name="cordova-plugin-whitelist" version="1.0.0" source="npm" /&gt;

据我所知,它是您建议@Fido 的镜子(如果我错了,请纠正我),但问题仍然存在;我只能想象这是我的起源、允许意图或 Content-Security-Policy 定义不正确。

谢谢!

【问题讨论】:

  • 如果您使用的是 cordova 4.0 及更高版本,请确保您有 this 插件。在我使用它之前,我的白名单停止工作。
  • 我可能应该删除我的cordova标签,因为我才刚刚开始接触这些PhoneGap构建,目前从cloud服务开始。我可以将插件节点的版本属性改为 4 吗?
  • Cordova 和 Phonegap 本质上是一回事。 Cordova 归 Apache 所有,并且是开源的。 Phonegap 归 Adob​​e 所有,是建立在 cordova 之上的云服务。无论如何,所有phonegap插件本质上都是cordova插件。长话短说,您很可能需要此 plugin 才能使白名单正常工作。
  • 我刚刚注意到一个可能的错误。要在远程构建期间正确下载 phonegap 插件,请执行以下操作:&lt;plugin name="cordova-plugin-whitelist" version="1" /&gt; 实际上必须是此 &lt;gap:plugin name="cordova-plugin-whitelist" version="1" /&gt;
  • 你必须原谅我的无知@Fido,仍在学习,我澄清排除科尔多瓦的唯一原因是因为我理解,或者至少我的印象是我在使用云服务的控制条款。如何启用您在我的 config.xml 中建议的插件?有没有可以插入的&lt;gap:plugin name="..." 行?还是我只需要使用 SDK 将它们组合在一起?

标签: android cordova google-maps android-5.0-lollipop whitelist


【解决方案1】:

使用 Cordova 4.0 及更高版本时,您需要添加 this 插件以使您的白名单正常工作。

在您的情况下,因为您使用的是 phonegap 构建平台,所以这行:

<plugin name="cordova-plugin-whitelist" version="1" />

实际上应该是这样的:

<gap:plugin name="cordova-plugin-whitelist" version="1" />

如果证明云服务限制太多,那么您可以使用 CLI 安装 cordova 插件,然后在本地构建和部署。 有关此方法的更多信息here。这种方法需要更多的设置工作(例如获取 android sdk),但在我看来,从长远来看,开发速度会更快。

【讨论】:

  • 非常感谢,一个好地方,会尽快尝试所有这些,让你知道结果!
  • This 提供了有关使用 phonegap build 检索插件的更多信息。
  • 非常感谢您的回答,Fido!我还没有完全摆脱困境,但这已经非常明确地回答了这个特定问题。目前,似乎 Content-Security-Policy 必须进行大量更正,而我现在只得到一个普通的白屏 (WSOD),但进一步的证据表明这与到 PhoneGap 自动隐藏闪屏设置。此外,getCurrentCoordinates 有点不稳定,但会尝试将其用于计时器测试。
  • @Jester,你还有问题吗?如果有,它们是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
相关资源
最近更新 更多