我最近升级到了Cordova 5.0(和Cordova Android 4.0),从那时起,我的应用程序无法再访问外部资源。
我仍然<access origin="*" />在config.xml中(如前),并且仍然<uses-permission android:name="android.permission.INTERNET" />在AndroidManifest.xml中(如前),但是ajax调用被拒绝,没有任何解释(“ textStatus”参数为“错误”,“ errorThrown”参数为null,并且xhr.state()返回“已拒绝”)。
<access origin="*" />
<uses-permission android:name="android.permission.INTERNET" />
我已验证没有任何请求到达服务器,因此它似乎已被Android停止,但是日志未给出任何有关原因的解释…
我可以从Android浏览器访问问题网址,而不能从应用程序访问。
Ajax请求是通过向Backbone.sync()的调用由Backbone.js的,它最终调用jQuery的$。阿贾克斯()。我没有改变通话方式,只是升级了科尔多瓦。
在Cordova 5.0中是否有针对网络请求的新要求/设置,或者我需要做的与以前的Cordova版本不同的任何事情?
有谁知道我可以获取有关Android和/或Cordova为何拒绝请求的更多信息的方法?
我跟踪了罪魁祸首到android@4.0.0 cordova平台。现在,它需要新的cordova-plugin- whitelist插件。
可以安装
cordova plugin add cordova-plugin-whitelist
或通过添加
<plugin name="cordova-plugin-whitelist" spec="1" />
到config.xml,然后使用
<allow-navigation href="*" />
代替旧的<access origin="*" />标签。
有点烦人的是,当出现这样的问题时,日志不再吐出“白名单拒绝”错误消息了(这可能一次为我节省了很多时间),但也许以后会出现。