You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cordova应用iOS及Android调试版运行正常,Android发布版无法连接REST服务器求助

解决Cordova App Bundle无法连接HTTPS 8443后端的问题

嘿,我帮你梳理下这个问题的核心,应该是两个关键因素导致的——config.xml里冲突的网络权限配置,还有没明确指定后端服务器的8443端口,加上切换到App Bundle后Android的网络安全策略有一些细节需要注意。下面是一步步的解决方案:

1. 清理冲突的网络权限配置

你的config.xml里先设置了针对samoperational.co.uk的精准权限,但后面又加了全局允许的配置:

<access origin="*" />
<allow-intent href="*" />
<allow-navigation href="*" />

这不仅会覆盖你之前的限制,更关键的是,Cordova在构建App Bundle时,这种全局配置可能会让非标准HTTPS端口(比如你的8443)的连接被意外拦截。建议删掉这些全局条目,换成精准的配置:

<!-- 明确包含8443端口的后端地址 -->
<access origin="https://www.samoperational.co.uk:8443" />
<allow-intent href="https://www.samoperational.co.uk:8443/*" />
<allow-navigation href="https://www.samoperational.co.uk:8443/*" />
<allow-navigation href="file:*" /> <!-- 保留本地文件导航的必要权限 -->

2. 添加Android网络安全配置(适配App Bundle)

从Android 9(API 28)开始,系统默认对网络请求有更严格的限制,哪怕是HTTPS连接,非标准端口也需要明确声明。你需要创建一个网络安全配置文件:

  • 在项目根目录创建res/xml/network_security_config.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">samoperational.co.uk</domain>
        <!-- 明确允许8443端口的HTTPS连接 -->
        <domain includeSubdomains="true">samoperational.co.uk:8443</domain>
    </domain-config>
</network-security-config>
  • 然后在config.xml的Android平台部分添加这个配置的引用:
<platform name="android">
    <!-- 保留你现有的其他配置 -->
    <config-file target="AndroidManifest.xml" parent="/manifest/application" mode="merge">
        <application android:networkSecurityConfig="@xml/network_security_config" />
    </config-file>
</platform>

3. 检查并更新内容安全策略(CSP)

打开你的index.html,找到CSP的meta标签,确保它允许连接到你的后端服务器:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' https://www.samoperational.co.uk:8443; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; media-src *;">

这里一定要把https://www.samoperational.co.uk:8443加进去,否则前端的AJAX请求会被CSP拦截。

4. 重新构建App Bundle

最后,清理旧的构建缓存,重新生成App Bundle:

cordova clean android
cordova build android --release -- --packageType=bundle

你可以用bundletool把生成的.aab转换成APK做本地测试,或者直接上传到Google Play内部测试轨道验证连接是否正常。

内容的提问来源于stack exchange,提问作者cribo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 13:02:30