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

React Native+Axios仅iPhone14 Pro出现Error 404问题求助

问题分析与解决方案

核心问题

在React Native 0.72.6 + Axios环境下,调用8080端口的HTTPS API时,仅iPhone 14 Pro及对应模拟器返回404错误,切换到默认HTTPS端口443后所有设备正常,其他设备(Android、iPhone 6/8/12)无异常。

可能原因及解决方法

1. iOS 16+ 对非标准HTTPS端口的网络限制

iPhone 14 Pro搭载的iOS版本多为16及以上,Apple在该版本中强化了网络安全策略,对非标准HTTPS端口(如8080)的请求存在额外校验或拦截逻辑。

解决办法:
修改Info.plist中的NSAppTransportSecurity配置,明确允许目标域名的8080端口HTTPS请求:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <false/>
  <key>NSExceptionDomains</key>
  <dict>
    <key>你的API域名.com</key>
    <dict>
      <key>NSIncludesSubdomains</key>
      <true/>
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.2</string>
      <!-- 允许8080端口的HTTPS请求 -->
      <key>NSTemporaryExceptionAllowsPortHTTPS</key>
      <array>
        <string>8080</string>
      </array>
    </dict>
  </dict>
</dict>

注意:NSAllowsArbitraryLoads设为false时,必须通过NSExceptionDomains精准配置允许的域名和端口,iOS 16+对模糊配置的容忍度极低。

2. Axios的URL端口解析问题

部分版本的Axios在iOS 16+环境下,对URL中端口的解析可能存在异常,即使已更新到最新版本,仍需确认请求URL的拼接逻辑。

解决办法:
手动拼接完整URL,避免依赖Axios自动解析:

// 明确指定带端口的基础URL
const baseURL = 'https://你的API域名.com:8080';
axios.get(`${baseURL}/api/你的接口路径`);

同时检查是否存在URL编码问题,确保端口号未被意外转义。

3. iPhone 14 Pro网络栈的特殊路由策略

iPhone 14 Pro的网络硬件(如5G模块)或系统网络栈对非标准端口的HTTPS请求有不同的路由处理,可能导致请求无法正确抵达服务器。

解决办法:

  • 模拟器端:检查Mac防火墙是否拦截了8080端口的出站请求;
  • 真机端:切换网络(Wi-Fi/蜂窝数据)测试,排除运营商的端口限制;
  • 服务器端查看访问日志,确认iPhone 14 Pro的请求是否真的到达服务器,还是在客户端被拦截。

4. TLS版本兼容性问题

iOS 16+要求HTTPS连接使用TLS 1.2及以上版本,如果服务器8080端口的HTTPS服务使用了较低版本的TLS,会被iPhone 14 Pro拒绝,但旧设备可能兼容。

解决办法:

  • 服务器端升级TLS版本至1.2或1.3;
  • 用命令openssl s_client -connect 你的API域名.com:8080验证服务器的TLS配置。

内容的提问来源于stack exchange,提问作者Marcelo de Sá

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:30:04