我们使用Cordova~3.9通过<content>
文件中的config.xml
标记加载外部网络应用,如下所示:
<content src="http://10.1.1.1:3000"/>
当更新到Cordova 4.0+时,我们无法再通过此方法加载外部应用程序;该应用程序不加载任何内容。
我查看了Cordova 4.0的白名单更改,并尝试使用<access>
,<allow-intent>
和<allow-navigation>
标记,以便无法成功访问外部源。
功能差异: 3.9 - 加载外部URL作为Cordova应用程序的来源 4.0+ - 没有加载页面,应用程序显示空白屏幕
如何使用Cordova 4.0+加载外部网站?
谢谢!
答案 0 :(得分:2)
Apache Cordova中的安全策略已经从Cordova 5.0大幅改变,它不允许您在没有白名单插件的情况下访问外部URL。
据我所知,如果您打算在Cordova应用程序中访问外部托管的Web应用程序,请更好地查看hosted webapp plugin
该插件通过提供描述网站的清单,允许使用Cordova应用程序内的网站中托管的内容。此外,它还允许您使用Cordova插件的功能。
答案 1 :(得分:0)
我这样做,但是我在项目的index.html文件中加载了
的网站top.location.href = "https://mywebapp.com";
我正在使用Phonegap 5.5.2。在config.xml中,我有
<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
在Mac上的plist中,我将Allow Arbitrary Loads设置为YES。
答案 2 :(得分:0)
我刚试过这个,它适用于iOS Cordova 4.2.1(截至2016年9月的当前版本):
<allow-navigation href="[your url, wildcards, etc]" />
我把它放在config.xml的iOS平台部分。
我猜您遇到的问题是自您发布以来使用较新版本的iOS Cordova修复的问题。
多年来人们一直在说“不要以这种方式使用科尔多瓦”,多年来他们一直都错了。它工作得很好,只要你遵循他们的设计和可用性指南,Apple就不会介意。
答案 3 :(得分:-1)
这不是推荐使用Cordova的方法。见General Tips
打开任何外部网站的链接时使用InAppBrowser。这比将域名列入白名单并将内容直接包含在应用程序中要安全得多,因为InAppBrowser将使用本机浏览器的安全功能,并且不会让网站访问您的Cordova环境。即使您信任第三方网站并将其直接包含在您的应用程序中,该第三方网站也可能链接到恶意网站内容。
config.xml
中的<content>
节点应该是Cordova首次加载时加载的默认HTML页面。不是IP地址。它应该引用www
文件夹中的HTML页面。
答案 4 :(得分:-1)
选项1:
你可以做一件事,在www/index.html
内放一个打开http://10.1.1.1:3000
的iframe
<iframe src="http://10.1.1.1:3000">
<p>Your device does not support iframes.</p>
</iframe>
应用样式以获得所需的高度,宽度和其他选项。
选项2:
使用inappbrowser插件。
var ref = cordova.InAppBrowser.open('http://10.1.1.1:3000', '_blank', 'location=yes');
查看更多选项