在我当前使用API 26的Android模拟器中,我尝试使用其浏览器访问android模拟器主机文件中设置的localhost子域,但没有成功。
我成功管理了模拟器的根目录并修改了它的/etc/hosts
文件(推送本地文件并使用busybox mini vi 实现)。我在浏览器中以及通过ping
使用adb shell
命令进行的一些成功测试如下(其中192.168.0.10是我当前分配的主机ip):
192.168.0.10 source
192.168.0.10 source.api
192.168.0.10 source.api.local
10.0.2.2 source
10.0.2.2 source.api
10.0.2.2 source.api.local
但是使用localhosts子域映射,我只能成功地从adb shell
ping域。浏览器在下一个主机映射中显示ERR_CONNECTION_REFUSED
错误:
10.0.2.2 something.localhost
10.0.2.2 something.something.localhost
为什么会这样?
编辑:
当前问题仅发生在我的macOS 10.14中,无法在Ubuntu 18.04中重现该问题。
答案 0 :(得分:0)
问题是使用顶级域.local
时,macOS的Multicast DNS(mDNS)实现
Bonjour ...“如果将.local附加到主机名后,将自动解析运行MacOS的链接本地Macintosh计算机和运行iOS的移动设备的私有IP地址。”
RFC 6762 Appendix G推荐以下私有名称空间,而不是.local | .localhost,以避免冲突。