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”更改为旧版本,构建失败