Android 模拟器浏览器无法访问主机文件上设置的本地主机子域
Android emulator browser can't access to localhost subdomains set on hosts file
在我当前的 Android 模拟器 API 26 中,我试图通过它的浏览器访问 android 模拟器主机文件中设置的本地主机子域,但没有成功。
我成功地root了我的模拟器并修改了它的/etc/hosts
文件(推送本地文件并使用busybox mini vi实现)。我在浏览器中使用 adb shell
中的 ping
命令进行的一些成功测试如下(其中 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 中重现该问题。
当使用顶级域 .local
时,问题出在 macOS 的 Multicast DNS (mDNS) 实现上
Bonjour... "will automatically resolve the private IP addresses of link-local Macintosh computers running MacOS and mobile devices running iOS if .local is appended to their hostnames."
RFC 6762 Appendix G 推荐以下私有命名空间而不是 .local|.localhost 以避免冲突。
- .内网.
- .内部.
- .私人.
- .corp.
- .家.
- .lan.
在我当前的 Android 模拟器 API 26 中,我试图通过它的浏览器访问 android 模拟器主机文件中设置的本地主机子域,但没有成功。
我成功地root了我的模拟器并修改了它的/etc/hosts
文件(推送本地文件并使用busybox mini vi实现)。我在浏览器中使用 adb shell
中的 ping
命令进行的一些成功测试如下(其中 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 中重现该问题。
当使用顶级域 .local
Bonjour... "will automatically resolve the private IP addresses of link-local Macintosh computers running MacOS and mobile devices running iOS if .local is appended to their hostnames."
RFC 6762 Appendix G 推荐以下私有命名空间而不是 .local|.localhost 以避免冲突。
- .内网.
- .内部.
- .私人.
- .corp.
- .家.
- .lan.