升级到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拒绝请求的更多信息的方法?

  • 列出Android目标时发生错误
  • 向Phonegap Android splashscreen添加加载指示器/进度条
  • JQuery的移动应用程序奇怪的行为
  • Apache Cordova(PhoneGap)中的资源结构并从文件系统加载文件
  • 为Gradle和Cordova 5指定签名configuration
  • 如何将应用程序预加载器/启动屏幕/启animation面添加到我的PhoneGap Android应用程序
  • PhoneGap和WhatsApp
  • 如何链接Eclipse / Phonegap / Android项目中的assets / www文件夹?
  • 我跟踪了罪魁祸首到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

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