React Native iOS模拟器无法调用无SSL的AWS实例API求助
解决React Native iOS模拟器调用AWS HTTP API的网络错误问题
你的问题核心在于info.plist的ATS(App Transport Security)配置结构错误,以下是具体修正方案:
1. 修正ATS配置的结构问题
你当前的配置把NSAllowsArbitraryLoads放在了NSExceptionDomains字典内部,这不符合Apple的ATS配置规范,导致规则不生效。
方案一:全局允许HTTP请求(仅测试环境使用,不推荐生产)
如果只是测试阶段快速验证,可以直接全局关闭ATS的HTTP限制:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
方案二:针对AWS实例IP配置专属例外(推荐所有环境)
为了保证应用安全性,建议只对目标AWS实例开放HTTP权限,配置如下:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <!-- 针对你的AWS实例IP配置例外 --> <key>25.234.23.53</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSIncludesSubdomains</key> <true/> </dict> <!-- 保留localhost配置用于本地调试 --> <key>localhost</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>
2. 配置生效操作步骤
- 关闭当前运行的iOS模拟器
- 在Xcode中执行
Cmd + Shift + K清理构建缓存 - 重新运行React Native项目:
npx react-native run-ios
额外验证项
- 确认AWS实例安全组已开放
3030端口的入站访问权限,允许模拟器所在网络的IP(测试阶段可临时开放0.0.0.0/0) - 检查React Native代码中API请求的URL是否拼写正确,确保包含端口号
:3030
内容的提问来源于stack exchange,提问作者Ahmad Habib
相关产品推荐
相关产品推荐

