Cordova Android 发布版本 Ajax 不工作

Cordova Android release builds Ajax not working

Ajax 调用不起作用 仅在发布版本中 但在调试版本中没问题。我正在通过 https 进行所有调用。没有 CORS 错误。请注意,该问题仅出现在 Android,而不出现在 iOS。

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

 SHA256withRSA

我已经尝试了 SO 上可用的所有修复程序:

 <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(必须支持旧手机)

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

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

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

我会回答我自己的问题,这可能会为别人节省很多时间。 问题是我正在通过 Win-Acme 在 Windows 服务器上使用 let's encrypt SSL 证书,并且我一直在 Android 6.1.0 上进行测试。 在 this post 之后,我刚刚注意到 Let's Encrypt SSL 证书将不再适用于 Android < 7.1.1

在 Android 11 上进行了测试,它刚刚起作用。