我正在开发一个连接到网络服务的 iOS 应用程序。对于开发和测试,我们使用 Bonjour 来查找本地网络上的服务器,并且在登录过程中应用程序会提供连接到其中一个服务器而不是生产站点。
自升级到 El Capitan 后,我无法从模拟器连接到在同一台 Mac 上运行的 Web 服务器。我能够使用 Simulated Mobile Safari 和 OS X 中的 Python 附带的 Web 服务器重现此问题。
- 打开终端,启动网络服务器:
python -m SimpleHTTPServer 8000
- 在模拟器中打开 Safari,输入 URL:
http://my-computer-name.local.:8000/
模拟的 Mobile Safari 显示“Safari 无法打开页面,因为它无法连接到服务器。”
此外,每次我尝试加载 URL 时,控制台中都会出现以下消息:
assertiond[____]: assertion failed: 15A284 13A340: assertiond + 13207 [28CC4371-F3F9-3578-9436-310B23A2C638]: 0x1
其他可能相关的事实:
- Desktop Safari 能够使用 URL
http://my-computer-name.local.:8000/
进行连接
- Real Mobile Safari(在同一网络上的 iOS 设备上)能够使用 URL
http://my-computer-name.local.:8000/
进行连接
- 模拟的 Mobile Safari 能够使用 URL
http://127.0.0.1:8000/
进行连接(不过我需要它来使用 Bonjour 提供的主机名)。 - 模拟的 Mobile Safari 能够连接到另一台机器,其 URL 类似于
http://other-computer.local.:8000/
- 我使用的是模拟器版本 9.0 (SimulatorApp-620 CoreSimulator-179)
- OS X El Capitan 10.11 (15A284)
- 有趣的是,在网络上搜索 UUID 28CC4371-F3F9-3578-9436-310B23A2C638 只搜索到少量职位。 (您可以通过修复此错误赚取 15 美元!)
- 这似乎与 App Transport Security 无关。当禁用 ATS 时,我的应用会以这种方式运行。
你能重现这个问题吗?我错过了什么吗?
最佳答案
我通过在本地 OSX/etc/hosts 文件中添加一个条目解决了这个问题:
在“localhost”之后附加您的 FQDN:
127.0.0.1 localhost mymachine.mydomain.local
关于ios-simulator - iOS 模拟器拒绝连接到本地。主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32978301/