如何在iOS模拟器WebView中打开非localhost的自定义local域名Web项目
解决iOS模拟器WebView无法访问本地HTTPS域名的问题
1. 确认证书域名匹配
自签名证书的**Subject Alternative Name (SAN)**必须包含nomatter.local.something.ru,不能仅依赖主域名。生成证书时要:
- 确保证书的CN(通用名称)或SAN字段明确包含
*.local.something.ru或nomatter.local.something.ru - 在Mac钥匙串访问中查看证书详情,进入「信息」→「主题备用名称」,确认目标域名在列表内
2. 手动开启模拟器证书信任
导入证书到模拟器后,必须手动启用信任(iOS 13+强制要求):
- 打开模拟器「设置」→「通用」→「关于本机」→「证书信任设置」
- 找到导入的自签名证书,开启「启用完全信任」开关
3. 检查Docker中Nginx的HTTPS配置
确保Nginx加载了对应nomatter.local.something.ru的证书和私钥,配置示例:
server { listen 443 ssl; server_name nomatter.local.something.ru; ssl_certificate /path/to/your/local-cert.pem; ssl_certificate_key /path/to/your/local-key.pem; location / { proxy_pass http://your-node-bff:port; # 按需添加代理头(如Host、X-Forwarded-Proto等) } }
- 验证Nginx配置语法:
docker exec <nginx容器名> nginx -t - 重启Nginx容器:
docker restart <nginx容器名>
4. 配置iOS项目ATS规则
如果项目启用了App Transport Security(ATS),需在Info.plist中添加域名例外:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>local.something.ru</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <false/> <!-- 仅信任合法HTTPS证书,测试环境可临时改为true --> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.2</string> </dict> </dict> </dict>
5. 验证SSL连接有效性
用openssl测试Nginx的SSL配置是否正常:
openssl s_client -connect nomatter.local.something.ru:443
- 检查输出中是否有
Verify return code: 0 (ok),若有错误根据提示修复证书或配置
6. 清理模拟器缓存
缓存可能导致证书不生效,可重置模拟器:
- 点击模拟器顶部菜单「硬件」→「擦除所有内容和设置」
- 重新导入证书并开启信任后再测试访问
内容的提问来源于stack exchange,提问作者Uzakov Nikita
相关产品推荐
相关产品推荐

