我有一个使用cordova和angularjs的应用程序。应用程序中的某些功能需要访问Google Maps API和Yahoo Weather API。
当我编译到Android和iOS平台时,一切正常,但不适用于Windows平台(Windows Phone 8.1)。我在两个电话(谷歌和雅虎)上都收到了这些错误:
"**APPHOST9601** An app can't load remote web content in the local context".
我想我已经在config.xml上正确配置了cordova-plugin-whitelist以及正确的意图,导航和网络标签(我在index.html上也有meta标签)。
奇怪的是,如果我添加wp8 cordova平台并运行它,我没有错误。只有在windows平台上运行windows phone 8.1项目的解决方案。
这就是我在config.XML中的内容
<!--Controls which URLs the WebView itself can be navigated to. Applies to top-level navigations only.-->
<allow-navigation href="*" />
<!-- Controls which URLs the app is allowed to ask the system to open. By default, no external URLs are allowed. -->
<allow-intent href="comgooglemaps:*" />
<allow-intent href="sms:*" />
<allow-intent href="tel:*" />
<allow-intent href="geo:*" />
<allow-intent href="*" />
<!-- Controls which network requests (images, XHRs, etc) are allowed to be made (via cordova native hooks). -->
<access origin="https://tel:*" launch-external="yes" />
<access origin="https://mailto:*" launch-external="yes" />
<access origin="https://geo:*" launch-external="yes" />
<access origin="https://comgooglemaps:*" launch-external="yes" />
<access origin="https://*" />
<access origin="http://maps.google.com/*" />
<access origin="content:///*" />
<access origin="*"/> and I also have this in the HTML page <!-- Enable all requests, inline styles, and eval() -->
在HTML中我有以下元数据
<meta http-equiv="Content-Security-Policy" content="default-src *; media-src *; style-src 'self' * 'unsafe-inline' * 'unsafe-eval' *; script-src 'self' * 'unsafe-inline' * 'unsafe-eval' *" />
答案 0 :(得分:2)
@hsantos,
很多人都受到最近UNANNOUNCED升级的打击。您的问题与每个人都遇到的问题一致。这是你需要知道的。有关 white-list
来自 Phonegap Build 论坛,Petra Adds:
我想补充一点:没有公告,PGB将默认PGB版本从3.7.0更改为cli-5.2.0。这会导致所有未设置“手机版”版本的人在config.xml中遇到突然需要启动画面和白名单插件以及config和html中的额外白名单规范。
此外,几个插件似乎无法使用cli-5.2.0正确构建,导致日志文件错误消息关于&#34; Class ***。java&#34;。
FWIW: Phonegap Build admitted to as much in this tweet
来自Top Mistakes by Developers new to Cordova/Phonegap你已经点击了:
对于#6&amp; #7
使用CLI版本,如果您没有为您的平台分配版本,或者在&#39;&#39; Phonegap Build&#39;&#39;如果你没有在config.xml中设置phonegap-version,你将获得最新版本。如果运气好,您的程序就会按预期运行。如果你不幸运,你会得到一组级联错误。
幸运的是,对于我们所有人来说,Holly Schinsky写了一篇很好的博文来解释这一切:
Cordova / PhoneGap版本混淆
http://devgirl.org/2014/11/07/cordovaphonegap-version-confusion/
#10
这个相对*新*要求意味着 - 要访问网络上的任何网站或资源,您必须使用白名单和白名单插件。如果您使用cordova-android@4.0.0或更高版本,此要求将生效;包括cli-5.1.1。但是,如果您的版本在4.0.0之前,请使用3.5.0或3.7.0,那么不必须添加 white-list 要求。< / p>
要明确,&#34;白名单&#34;已经存在了一段时间,但插件和要求是非常新的。正如您所期望的那样,&#34;白名单&#34;添加了,defacto开放访问功能已被弃用。或者说另一种方式,事实上开放访问功能已被计划并计划被淘汰。此更改标志着删除开放访问功能的一个步骤。
此外,内容安全策略(CSP)已经吸引了众多开发人员 - 因为它的公开性很差。此CSP需要包含您使用的每个HTML页面,就像您必须等待“设备准备”一样。该文档隐藏在许多最新文档页面的底部。
相关链接
Phonegap Build Forum:Notes for upgrading to cli-5.1.1 on PGB,现在需要白名单