我有一个使用Cordova 8.1.2开发的应用程序,并在Android 8.1 Oreo API Level 27 Revision 3下编译,可在Play商店和注册用户中成功使用.
在过去的几周中,一些用户已将手机升级到Android 9.0 Pie,当他们打开该应用并进行注册或登录操作时,他们会收到Ajax通信,并显示服务器错误.
我已经在Android Studio的开发人员模式下以及在Android 9.0 Pie的Emulator中进行了尝试,并且得到了相同的结果.我使用不同的ajax URL进行了一些测试,并且ajax调用从未到达服务器.
有人遇到同样的问题吗?
这是android studio中的错误日志:
2019-01-30 20:29:19.701 1921-1921/? E/netmgr: Failed to open QEMU pipe 'qemud:network': Invalid argument 2019-01-30 20:29:22.351 1754-1900/? E/storaged: getDiskStats failed with result NOT_SUPPORTED and size 0 2019-01-30 20:29:38.714 1925-2029/system_process E/memtrack: Couldn't load memtrack module
控制台中的Ajax错误视图:
{"readyState":0,"status":0,"statusText":"error"}
解决方法:
最后,我解决了这个问题.问题在于,在Android 9 Pie API 28中,默认情况下允许ajax调用https服务.有以下选项:
>在ajax网址中进行https调用
>为您的http网站添加例外(view developer android)