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

我最近升级到Cordova 5.0(和Cordova Android 4.0),从那时起,我的应用程序无法再访问外部资源。

我仍然在config.xml中有 (和以前一样),我在AndroidManifest.xml中仍然有 (和以前一样) ,但是ajax调用被拒绝而没有解释(“textStatus”参数是“错误”,“errorThrown”参数是null,xhr.state()返回“被拒绝”)。

我已经validation没有请求到达服务器,因此它似乎被Android停止,但日志没有给出任何解释为什么…

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

ajax请求是通过调用Backbone.js的Backbone.sync()来完成的,后者最终调用了jquery的$ .ajax()。 我没有改变任何关于如何进行通话的事情……只是升级了cordova

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

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

Solutions Collecting From Web of "升级到Cordova 5.0 + cordova-android@4.0后,Ajax请求失败"

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

它可以安装

 cordova plugin add cordova-plugin-whitelist 

或者通过添加

  

到config.xml,然后配置

  

代替旧的标签。

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

在Cordova 6.X中,您需要删除内置的白名单插件并重新安装新版本的插件。

 cordova plugin remove cordova-plugin-whitelist 

并重新安装插件

 cordova plugin add cordova-plugin-whitelist 

然后将替换为config.xml文件而不是在我的情况下这个技巧有效。

两件事情

  1. 确保您使用的ajax URL允许跨源请求
  2. 您是否在发出跨源请求时传递相关标头

读书

http://enable-cors.org/

如何在AngularJs中启用CORS

http://backbonetutorials.com/cross-domain-sessions/

如果你使用cordova 6.xx你需要卸载内置的cordova-plugin-whitelist使用

cordova插件删除cordova-plugin-whitelist

并使用重新安装它

cordova插件添加cordova-plugin-whitelist

即使问题仍然存在重新启动命令提示并尝试它。