我最近升级到 Cordova 5.0(和 Cordova Android 4.0),从那以后,我的应用程序无法再访问外部资源。
我还有 <access origin="*" />
在 config.xml 中(和以前一样),我还有 <uses-permission android:name="android.permission.INTERNET" />
在 AndroidManifest.xml 中(和以前一样),但 ajax 调用被拒绝而没有解释(“textStatus”参数为“error”,“errorThrown”参数为 null,xhr.state() 返回“rejected”)。
我已经验证没有请求访问服务器,所以它似乎被 Android 停止了,但是日志没有给出任何解释为什么......
我可以从 Android 浏览器访问相关 URL,但不能从应用程序访问。
ajax 请求是通过调用 Backbone.js 的 Backbone.sync() 发出的。 ,最终调用 jquery 的 $.ajax()。我没有改变任何关于如何调用电话...只是升级了cordova。
在 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="*" />
标记。
当这样的问题出现时,日志不再显示“白名单拒绝”错误消息,这有点烦人(这本来可以为我节省很多时间),但也许以后会出现。
关于android - 升级到 Cordova 5.0 + cordova-android@4.0 后 Ajax 请求失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30060534/