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

Tro*_*roy 30 ajax android cordova

我最近升级到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()返回"rejected").

我已经验证没有请求到达服务器,所以它似乎被Android停止了,但是日志没有给出任何解释为什么......

我可以从Android浏览器访问有问题的网址,而不是从应用程序访问.

Ajax请求是通过向Backbone.sync()的调用由Backbone.js的,它最终调用jQuery的$.阿贾克斯().我没有改变任何关于如何进行通话的信息​​......只是升级了cordova.

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

有谁知道我可以获得更多关于为什么Android和/或Cordova拒绝请求的信息?

Tro*_*roy 54

我跟踪了罪魁祸首到android@4.0.0 cordova平台.它现在需要新的cordova-plugin-whitelist插件.

它可以安装

cordova plugin add cordova-plugin-whitelist
Run Code Online (Sandbox Code Playgroud)

或者通过添加

<plugin name="cordova-plugin-whitelist" spec="1" />
Run Code Online (Sandbox Code Playgroud)

到config.xml,然后配置

<allow-navigation href="*" />
Run Code Online (Sandbox Code Playgroud)

代替旧的<access origin="*" />标签.

有点烦人的是,当这样的问题出现时,日志不会再吐出"白名单拒绝"错误消息(这会节省我很多时间),但也许这会在以后发生.

  • 非常感谢你.救了我的一天. (4认同)