我是移动开发的新手。我正在使用 Phonegap/Cordova 创建跨平台应用程序。我的代码在 Android 上运行良好,但是当我将其移植到 iPhone 时,它显示错误:
[143:2003] ERROR whitelist rejection: url="abc"
现在我能克服这个问题吗?
注意:此答案仅适用于 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片段吗?
在 PhoneGap 3.0 中,您需要在 Project 文件夹中编辑 config.xml(注意:不是 www/config.xml)
<access origin="*" />
在PhoneGap 3.0 中,您需要编辑www/config.xml
、添加/编辑<access>
标签。例如,如果您想允许所有内容,请将标签更改为:
<access origin="*" />
您可以在 Cordova.plist 文件中添加以下代码:
<key>ExternalHosts</key>
<array>
<string>*.facebook.com</string>
</array>
作为*.facebook.com
域名,您可以使用两个不同的子域。
您必须加入域白名单,这样您才能访问外部域,例如http://google.com。
在 iOS (Cordova > 3.0.0) 中,白名单规则在元素中找到AppName/config.xml
并用元素声明<access origin="..." />
您还可以使用通配符来声明域。例如,要允许访问 Google 的所有子域和 TLD(.com、.net 等),请使用*.google.*
参考:域白名单指南
即使我遇到了同样的问题...我通过以下方式修复了它..在 cordova.plist--> ExternalHosts 数组菜单下,将项目添加为 * 或. . 所以它允许所有外部链接......如果你必须一一提到它作为.facebook。,*.google.* 等
这是因为 phonegap 不会接受外部 url。对于下面的 phonegap 旧版本,2.x
我们需要cordova.plist
像这样设置 url。
例如:(*.google.co.in
您可以将您的网址放在 *.this 之后)和OpenAllWhitelistURLsInWebView
---to --- YES
。