小编典典

升级到Cordova 5.0 + cordova-android@4.0后,Ajax请求失败

ajax

我最近升级到了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()返回“已拒绝”)。

我已验证没有任何请求到达服务器,因此它似乎已被Android停止,但是日志未给出任何有关原因的解释…

我可以从Android浏览器访问问题网址,而不能从应用程序访问。

Ajax请求是通过向Backbone.sync()的调用由Backbone.js的,它最终调用jQuery的$。阿贾克斯()。我没有改变通话方式,只是升级了科尔多瓦。

在Cordova 5.0中是否有针对网络请求的新要求​​/设置,或者我需要做的与以前的Cordova版本不同的任何事情?

有谁知道我可以获取有关Android和/或Cordova为何拒绝请求的更多信息的方法?


阅读 470

收藏
2020-07-26

共1个答案

小编典典

我跟踪了罪魁祸首到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="*" />标签。

有点烦人的是,当出现这样的问题时,日志不再吐出“白名单拒绝”错误消息了(这可能一次为我节省了很多时间),但也许以后会出现。

2020-07-26