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

React Native iOS16.1中NSAllowsArbitraryLoads无效,axios请求报错

解决React Native iOS中Axios请求报错-1004(无法连接服务器)的问题

针对你遇到的AxiosError: Network Error(错误码-1004)问题,结合你已完成的排查步骤,给出以下具体解决方案:

1. 检查BASE_URL的正确性

  • 本地开发禁用localhost:iOS模拟器的localhost指向模拟器自身,而非运行后端的电脑。请替换为电脑的局域网IP地址(例如http://192.168.1.100:3000),或使用127.0.0.1(仅对模拟器有效)。
  • 核对协议与端口:确保BASE_URL和Postman中使用的地址完全一致,比如后端用http而非https,端口号没有写错。

2. 确认iOS ATS配置生效

  • 检查修改的Info.plist路径:必须修改ios/[你的项目名称]/Info.plist,而非Pods目录下的文件。修改后需重新编译项目(先Clean Build Folder再运行)。
  • 可替换全局ATS配置为精准域名配置(降低全局关闭ATS的风险):
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>你的后端域名/IP</key>
    <dict>
      <key>NSIncludesSubdomains</key>
      <true/>
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
    </dict>
  </dict>
</dict>

3. 调整Axios请求配置

  • 添加超时与明确请求头:Postman默认请求头可能和Axios默认存在差异,手动指定配置测试:
axios.post(`${BASE_URL}/auth/register`, {
  name,
  corporation,
  email,
  password
}, {
  headers: {
    'Content-Type': 'application/json'
  },
  timeout: 10000 // 设置10秒超时
})
  • 尝试使用导入的ApiManager:你已导入ApiManager但未使用,它可能包含后端所需的拦截器或默认配置,替换成ApiManager.post试试:
ApiManager.post('/auth/register', {
  name,
  corporation,
  email,
  password
})

4. 验证网络连通性

  • 在iOS模拟器的Safari中直接访问${BASE_URL}/auth/register:如果无法打开,说明是网络连通问题而非代码问题,此时检查:
    • 电脑与模拟器是否在同一局域网;
    • 后端服务是否监听0.0.0.0(而非127.0.0.1,否则仅本地可访问);
    • 电脑防火墙是否允许后端端口的入站请求。

5. 排查后端配置

  • 检查IP白名单:部分后端会限制访问IP,Postman的请求IP与模拟器IP可能不同,需确保模拟器IP被允许;
  • 确认跨域配置:虽然React Native iOS默认允许跨域,但如果后端有严格的CORS设置,可能拒绝请求,可临时添加允许所有来源的CORS配置测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:10:32