【发布时间】: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 包:
<gap:plugin name="cordova-plugin-whitelist" version="1.0.0" source="npm" />
据我所知,它是您建议@Fido 的镜子(如果我错了,请纠正我),但问题仍然存在;我只能想象这是我的起源、允许意图或 Content-Security-Policy 定义不正确。
谢谢!
【问题讨论】:
-
如果您使用的是 cordova 4.0 及更高版本,请确保您有 this 插件。在我使用它之前,我的白名单停止工作。
-
我可能应该删除我的cordova标签,因为我才刚刚开始接触这些PhoneGap构建,目前从cloud服务开始。我可以将插件节点的版本属性改为 4 吗?
-
Cordova 和 Phonegap 本质上是一回事。 Cordova 归 Apache 所有,并且是开源的。 Phonegap 归 Adobe 所有,是建立在 cordova 之上的云服务。无论如何,所有phonegap插件本质上都是cordova插件。长话短说,您很可能需要此 plugin 才能使白名单正常工作。
-
我刚刚注意到一个可能的错误。要在远程构建期间正确下载 phonegap 插件,请执行以下操作:
<plugin name="cordova-plugin-whitelist" version="1" />实际上必须是此<gap:plugin name="cordova-plugin-whitelist" version="1" /> -
你必须原谅我的无知@Fido,仍在学习,我澄清排除科尔多瓦的唯一原因是因为我理解,或者至少我的印象是我在使用云服务的控制条款。如何启用您在我的 config.xml 中建议的插件?有没有可以插入的
<gap:plugin name="..."行?还是我只需要使用 SDK 将它们组合在一起?
标签: android cordova google-maps android-5.0-lollipop whitelist