53

我是移动开发的新手。我正在使用 Phonegap/Cordova 创建跨平台应用程序。我的代码在 Android 上运行良好,但是当我将其移植到 iPhone 时,它​​显示错误:

[143:2003] ERROR whitelist rejection: url="abc"

现在我能克服这个问题吗?

4

7 回答 7

54

注意:此答案仅适用于 PhoneGap 1.x 及以下版本。从 2.x 版本开始,白名单配置通过cordova.xml.

您必须将允许的 URL 添加到 PhoneGap.plist(或 Cordova.plist)的 ExternalHosts 数组中。

例如,如果您想允许访问此 URL http://www.myhost.com/path/file,则将www.myhost.com其作为新条目添加到ExternalHosts数组中。

如果您想允许访问 Google 的所有子域上的内容(例如maps.google.com, mails.google.com),您可以将*.google.com其作为新条目添加到ExternalHosts数组中。

不过,我不确定你为什么在链接中得到“abc”。你有“abc”作为任何东西的链接吗?它是URI片段吗?

于 2012-05-29T08:45:21.550 回答
32

在 PhoneGap 3.0 中,您需要在 Project 文件夹中编辑 config.xml(注意:不是 www/config.xml)

<access origin="*" />
于 2013-08-15T12:47:59.020 回答
18

在PhoneGap 3.0 中,您需要编辑www/config.xml、添加/编辑<access>标签。例如,如果您想允许所有内容,请将标签更改为:

<access origin="*" />
于 2013-07-23T18:09:58.050 回答
8

您可以在 Cordova.plist 文件中添加以下代码:

<key>ExternalHosts</key>
       <array>
               <string>*.facebook.com</string>
       </array>

作为*.facebook.com域名,您可以使用两个不同的子域。

于 2012-06-29T06:51:16.180 回答
3

您必须加入域白名单,这样您才能访问外部域,例如http://google.com

在 iOS (Cordova > 3.0.0) 中,白名单规则在元素中找到AppName/config.xml并用元素声明<access origin="..." />

您还可以使用通配符来声明域。例如,要允许访问 Google 的所有子域和 TLD(.com、.net 等),请使用*.google.*

参考:域白名单指南

于 2013-08-13T17:12:15.203 回答
0

即使我遇到了同样的问题...我通过以下方式修复了它..在 cordova.plist--> ExternalHosts 数组菜单下,将项目添加为 * 或. . 所以它允许所有外部链接......如果你必须一一提到它作为.facebook。,*.google.* 等

于 2012-09-12T11:55:04.837 回答
0

这是因为 phonegap 不会接受外部 url。对于下面的 phonegap 旧版本,2.x我们需要cordova.plist像这样设置 url。

例如:(*.google.co.in您可以将您的网址放在 *.this 之后)和OpenAllWhitelistURLsInWebView---to --- YES

于 2013-06-06T05:39:28.900 回答