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
相关产品推荐
相关产品推荐

