在Android Lollipop 5.0的Phonegap中将URL列入白名单

时间:2015-10-21 14:39:26

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

这让我脱掉了头发,因此急于开始在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(如果我错了,请纠正我),但问题仍然存在;我只能想象它是我的起源,允许意图或内容安全策略定义是不正确的。

谢谢!

1 个答案:

答案 0 :(得分:2)

使用Cordova 4.0及更高版本时,您需要添加this插件才能让白名单工作得更好。

在你的情况下,因为你正在使用phonegap构建平台这一行:

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

实际上应该是这样的:

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

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