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

React Native 0.44中HTTP Mock请求失败,如何配置支持HTTP?

解决React Native 0.44中Fetch无法发起HTTP请求的问题

我之前在RN 0.44版本也踩过类似ATS配置不生效的坑,结合你的情况,给你几个针对性的排查和解决步骤:

1. 严格检查info.plist的ATS配置结构

很多时候配置不生效是因为键名拼写错误或者结构不对,你需要确保info.plist里的配置完全符合苹果官方要求的正确格式:

直接编辑info.plist的源码(右键info.plist → Open As → Source Code),确认以下代码存在且无拼写错误:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

注意:如果是用Xcode的可视化编辑器添加的,有时候会自动生成错误的键名(比如把NSAppTransportSecurity写成了中文的“App Transport Security Settings”),一定要切换到源码模式确认键名是英文的官方字段。

2. 排查是否有其他ATS规则干扰

如果你之前为特定域名配置过NSExceptionDomains,可能会覆盖NSAllowsArbitraryLoads的全局设置。检查info.plist里是否有类似这样的冲突配置:

<key>NSExceptionDomains</key>
<dict>
    <key>your-other-domain.com</key>
    <dict>
        <key>NSIncludesSubdomains</key>
        <true/>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
    </dict>
</dict>

如果有,要么删除这些冲突的例外配置,要么给你的Rap Mock域名单独添加例外规则:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>your-rap-mock-domain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

3. 清理缓存并重启项目

RN 0.44版本的缓存机制很容易导致配置不生效,按以下步骤彻底清理:

  • 关闭Xcode和Metro Bundler(终端里按Ctrl+C停止)
  • 在Xcode中执行Product → Clean Build Folder(快捷键Cmd+Shift+K)
  • 清除RN的缓存:在终端运行 react-native start --reset-cache
  • 重新启动项目:react-native run-ios

4. 验证Rap Mock地址的可用性

先排除网络本身的问题:

  • 用浏览器直接访问你的Rap Mock HTTP地址,确认能正常返回数据
  • 在终端执行 curl http://你的rap-mock-url,看是否能得到响应

5. 检查Fetch请求代码的正确性

确保你的请求代码没有低级错误:

fetch('http://your-rap-mock-url', {
  method: 'GET', // 根据你的Mock接口调整为POST/PUT等
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
})
.then(response => {
  if (!response.ok) {
    throw new Error(`HTTP error! status: ${response.status}`);
  }
  return response.json();
})
.then(data => console.log('Mock数据:', data))
.catch(error => console.error('请求失败:', error));

注意不要把HTTP地址写成了HTTPS,或者域名、接口路径拼写错误。

按照以上步骤逐一排查,基本就能解决RN 0.44中Fetch无法发起HTTP请求的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:47:14