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

Cordova安卓应用从Play商店下载后无法获取远程数据

解决Cordova Android应用无法加载远程HTTP数据问题

核心原因

Android 12(API 31)及以上版本(你的targetSdkVersion为34)默认禁止明文HTTP请求,而你的前端请求使用的是http://api.damekex.com明文地址。浏览器环境允许明文请求,但Android应用会拦截这类请求,导致无法获取数据。

解决方案

方案1:切换到HTTPS(推荐)

这是最安全且符合Play商店规范的方案:

  • 为后端接口配置HTTPS服务,确保https://api.damekex.com可正常访问
  • 修改前端请求代码中的URL,将http://替换为https://:
    fetch('https://api.damekex.com/ajax-view')
    fetch('https://api.damekex.com/live')
    
  • 同步更新config.xml中的域名配置,确保所有相关规则使用HTTPS地址

方案2:临时允许指定域名的明文请求(不推荐长期使用)

若暂时无法切换HTTPS,可通过Android网络安全配置放行指定域名的明文流量:

  1. 在Cordova项目根目录下创建res/xml/network_security_config.xml文件,内容如下:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">api.damekex.com</domain>
        </domain-config>
    </network-security-config>
    
  2. 在config.xml中添加偏好配置,让Cordova编译时自动应用该规则:
    <preference name="AndroidNetworkSecurityConfig" value="res/xml/network_security_config.xml" />
    

额外配置优化

  • 清理config.xml中的冗余规则,保留必要的权限配置即可:
    <access origin="https://api.damekex.com/*" />
    <access origin="https://code.jquery.com/*" />
    <allow-navigation href="https://api.damekex.com/*" />
    <allow-navigation href="https://code.jquery.com/*" />
    <allow-intent href="*" />
    
  • 若使用HTTPS,当前配置的Content-Security-Policy中connect-src *已满足请求需求

排查验证

使用Android Studio的Logcat工具查看应用日志,过滤关键词CLEARTEXT或Network,确认是否存在明文请求被拦截的错误信息,以此验证问题根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:59:52