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

React Native打包APK后无法访问HTTP服务器问题的解决方法咨询

解决React Native打包APK后无法访问HTTP服务器的问题

核心原因

Android 9(API级别28)及以上版本默认限制明文HTTP请求,强制应用使用HTTPS传输数据。调试阶段React Native的调试工具会自动绕过这个限制,但正式打包APK时,系统会严格执行该规则,导致HTTP请求被拦截,出现网络错误。

具体解决方案

方法1:临时允许全局明文请求(仅测试用)

在项目的android/app/src/main/AndroidManifest.xml文件里,给application标签添加android:usesCleartextTraffic="true"属性:

<application
  ...
  android:usesCleartextTraffic="true"
  ...>
  ...
</application>

⚠️ 注意:这种方法只适合本地测试或无法切换HTTPS的临时场景,正式生产环境绝对不能用,明文传输会泄露数据,存在严重安全隐患。

方法2:切换为HTTPS请求(推荐生产环境)

如果你的服务器支持HTTPS,直接把请求地址从HTTP改成HTTPS即可:

axios.get('https://date.jsontest.com')
  .then((response: AxiosResponse<DateData>) => {
    setDateData(response.data);
  })
  .catch((error) => {
    console.error('Error fetching date data:', error);
  });

这是最合规、最安全的方案,完全符合现代应用的安全标准。

方法3:精准允许指定域名的HTTP请求(适合特殊生产场景)

如果必须保留部分域名的HTTP请求,可以通过网络安全配置文件精准控制:

  1. 在android/app/src/main/res/xml目录下新建network_security_config.xml文件(没有xml目录就手动创建),内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <!-- 仅允许这个域名的明文请求 -->
        <domain includeSubdomains="true">date.jsontest.com</domain>
    </domain-config>
</network-security-config>
  1. 回到AndroidManifest.xml,在application标签中引用这个配置:
<application
  ...
  android:networkSecurityConfig="@xml/network_security_config"
  ...>
  ...
</application>

这种方式既能满足业务需求,又能避免全局开启明文请求带来的安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 04:52:06