如何在React Native Expo中启用HTTP网络请求
解决Expo React Native项目中HTTP请求的App Transport Security配置问题
正确的app.config.js配置方式
你的第二种配置写法是正确的,但大概率是因为缓存未清除导致配置未生效。以下是完整的正确配置示例:
export default { expo: { // 项目基础配置(名称、SDK版本等) name: "YourProjectName", slug: "your-project-slug", sdkVersion: "49.0.0", // 替换为你的Expo SDK实际版本 // ...其他项目配置 ios: { infoPlist: { NSAppTransportSecurity: { NSAllowsArbitraryLoads: true } } } } };
关键操作与优化建议
清除缓存重启服务
修改配置后必须清除Expo缓存并重启开发服务器,否则旧配置会被复用:expo start -c更严谨的本地API配置(推荐)
完全开启NSAllowsArbitraryLoads在App Store审核时可能被拒,针对本地测试的API,建议仅允许特定域名/IP:ios: { infoPlist: { NSAppTransportSecurity: { NSExceptionDomains: { "192.168.x.x": { // 替换为你的本地API实际IP或域名 NSIncludesSubdomains: true, NSAllowsArbitraryLoads: true } } } } }额外排查点
如果配置生效后仍报错,检查:- 本地API是否正常运行,模拟器/设备能否访问该地址(模拟器中
localhost需替换为电脑的局域网IP) - API是否返回合法的HTTP响应(可通过浏览器或Postman测试)
- 本地API是否正常运行,模拟器/设备能否访问该地址(模拟器中
错误配置说明
你的第一种配置写法是错误的:Expo的infoPlist字段支持直接用JS对象映射到Info.plist的键值对,不需要通过xml数组注入原始XML内容。
内容的提问来源于stack exchange,提问作者Eric Hasegawa
相关产品推荐
相关产品推荐

