Cordova Android 版本构建 Ajax 无法正常工作

Posted

技术标签:

【中文标题】Cordova Android 版本构建 Ajax 无法正常工作【英文标题】:Cordova Android release builds Ajax not working 【发布时间】:2021-11-23 08:30:09 【问题描述】:

Ajax 调用仅在发布版本中不起作用,但在调试版本中正常。我正在通过 https 拨打所有电话。没有 CORS 错误。请注意,该问题仅出现在 android 上,而不出现在 ios 上。

我在后端使用 Let's Encrypt SSL 证书。

 SHA256withRSA

我已经尝试了所有可用的修复方法:

 <plugin name="cordova-plugin-enable-cleartext-traffic" space="^2.1.0" />  

我确认我在应用程序节点的清单中有android:usesCleartextTraffic="true"

我已经添加到 config.xml

 <access origin="*" />    
 <allow-navigation href="*" />
 <preference name="AndroidInsecureFileModeEnabled" value="true" />

还有

 <edit-config xmlns:android="http://schemas.android.com/apk/res/android" file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
        <application android:networkSecurityConfig="@xml/network_security_config" />
 </edit-config>

并在res/xml 中创建了一个文件network_security_config.xml 的内容

 <?xml version="1.0" encoding="utf-8"?>
 <network-security-config>
      <domain-config cleartextTrafficPermitted="true">
           <domain includeSubdomains="true">mydomain.com</domain>
      </domain-config>
 </network-security-config>

我已验证我的 Let's Encrypt SSL 证书有效,确实如此。由于 Android 10+,我不再有白名单插件

版本是

Cordova Android 10.1.1
Cordova 10.0.0

在运行 Android 6.0.1 的真实设备上测试(必须支持旧手机)

似乎没有任何效果。接下来我可以尝试什么?

【问题讨论】:

【参考方案1】:

您应该检查是否有任何 CORS 错误。如果您在 file: 上运行您的应用程序,您可能需要在 config.xml 中使用 AndroidInsecureFileModeEnabled

我建议您将 WebViewAssetLoader 与 cordova-android@10 一起使用。请查看公告https://cordova.apache.org/announcements/2021/07/20/cordova-android-10.0.0.html

【讨论】:

就像我的帖子所说,所有调用都是我通过 HTTPS 进行的,并且在调试中一切正常,包括在物理设备上,没有 CORS 错误。该问题仅在发布版本中。所有资产都加载正常,问题出在 AJAX 上。也已经有了 AndroidInsecureFileModeEnabled。【参考方案2】:

我会回答我自己的问题,它可能会为某人节省很多时间。 问题是我正在使用让我们通过 Win-Acme 在 Windows Server 上加密 SSL 证书,并且我一直在 Android 6.1.0 上进行测试。 关注this post 我刚刚注意到 Let's Encrypt SSL 证书在 Android 上将不再工作

在 Android 11 上进行了测试,并且可以正常工作。

【讨论】:

以上是关于Cordova Android 版本构建 Ajax 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Ajax Call 无法在 android 上运行,但在 ios Cordova 上运行良好

Cordova 构建 android 失败!!! JDK 8('1.8.*')的要求检查失败!检测到的版本:9.0.1 在 Windows 10 中

Gradle distributionUrl 使用“ionic cordova run android”更改为旧版本,构建失败

动态创建 Cordova 构建(Android 和 iOS)

Cordova 构建 Android 错误

Ajax 请求通过浏览器工作,而不是通过 iOS 或 Android 模拟器中的 Cordova 应用程序