React Native iOS模拟器无法访问本地HTTPS服务器问题求助
解决iOS模拟器访问本地自签名HTTPS服务器的网络错误
信任自签名证书
iOS模拟器默认不信任自签名证书,即使ATS配置正确也会拦截请求:- 打开iOS模拟器的Safari,访问你的服务器地址(比如
https://localhost:3000) - 当提示“此网站的证书不可信”时,点击“继续访问”
- 进入模拟器的「设置」->「通用」->「关于本机」->「证书信任设置」
- 找到你的自签名证书,开启「信任此证书」的开关
- 打开iOS模拟器的Safari,访问你的服务器地址(比如
调整ATS配置覆盖HTTPS相关限制
你当前的ATS配置仅允许localhost的明文HTTP请求,对HTTPS的自签名证书需要额外配置。修改Info.plist的NSAppTransportSecurity部分:<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>localhost</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> <key>NSIncludesSubdomains</key> <true/> </dict> <key>127.0.0.1</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>10.20.200.50</key> <!-- 替换成你的本地IP --> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> </dict> </dict> </dict>开发阶段也可以用简化配置(不建议生产环境使用):
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>确保服务器绑定正确地址
检查本地HTTPS服务器是否绑定到0.0.0.0而非仅localhost,这样模拟器才能通过127.0.0.1或本地IP访问。比如Node.js服务器启动时需指定app.listen(3000, '0.0.0.0')。验证证书域名匹配
自签名证书的CN(通用名称)或SAN(主题备用名称)必须包含你使用的访问地址:localhost、127.0.0.1、你的本地IP。如果证书仅包含localhost,用127.0.0.1访问会因域名不匹配导致请求失败。
内容的提问来源于stack exchange,提问作者FutureCake
相关产品推荐
相关产品推荐

