如何使用Cordova 4.0加载外部Web应用程序?

时间:2016-06-03 20:59:56

标签: ios cordova

我们使用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+加载外部网站?

谢谢!

5 个答案:

答案 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');

their docs

查看更多选项