怎么了
我的机器上设置了一个简单的 Apache 服务器,可以通过 localhost 上的 80 端口访问。访问以下地址时:
它适用于 Chrome/Firefox 和其他浏览器
ping/curl 到 localhost 有效并返回 200 响应。
在我的 hosts 文件中添加一个条目以将主机名指向 localhost 之后,Chrome 似乎不遵守 hosts 文件中的条目。
让我解释一下,我的主机文件现在如下所示:
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
::1 mydomain.local
当使用 Firefox/Edge/其他浏览器访问主机名时mydomain.local
,它会返回我的 Apache 服务器的默认页面作为 200 响应。ping
/curlmydomain.local
检查成功并显示它实际上指向 localhost 的 ::1 ipv6 版本中的 localhost。
但不知何故,Chrome 会DNS_PROBE_FINISHED_NXDOMAIN
针对该主机名抛出一个错误。
已尝试过
- 全新 Chrome 安装
- 使用 ipconfig 刷新 Windows DNS 缓存
- 通过 chrome://net-internals/ 刷新 Chrome DNS 缓存
- 禁用所有 DNS 预取和保护设置(我刚刚禁用了 Chrome 上的所有内容https://i.stack.imgur.com/uAOfp.jpg)
- 使用以下标志运行 Chrome
- –dns预取禁用
- --禁用预连接
- --隐身
- --启动最大化
- 禁用异步 DNS
所有尝试均失败
系统设置
- Windows 10 专业版 x64 (1809)
- Chrome 版本 74.0
- Firefox Quantum 66.0.3
--
编辑我知道 Chrome 不能很好地兼容某些 TLD,我尝试过不同的选项,但都.loc
.test
.localhost
没有成功
--
编辑2
引用的可能重复项已有 3 年历史,并且没有提供解决方案。如果此问题没有解决方案,Chromium 是否记录了此行为?它不允许主机条目?
答案1
我找到了如何“修复”该问题的方法,并将其发布在这里以供未来的读者阅读。
我该如何修复它?
我如何让 Chrome 真正将主机名指向 localhost ?实际上,这是一些奇怪的行为。只需将我正在使用的 TLD 更改为.localhost
根据 Chromium 的指导方针,自从引入.dev
合法 TLD 以来,有一些保留的 TLD。
为了安全地满足这些需求,保留了四个域名,如下所列和所述。。
- 。测试
- 。例子
- 。无效的
- .本地主机
建议使用“.test”来测试当前或新的 DNS 相关代码。
建议使用“.example”来编写文档或作为示例。
“.invalid”用于在线构建肯定无效且一眼就能看出无效的域名。
“.localhost”TLD 传统上在主机 DNS 实现中被静态定义为具有指向环回 IP 地址的 A 记录,并保留用于此类用途。任何其他用途都会与广泛部署的假定此用途的代码相冲突。
阅读更多这里
然而当我尝试使用 Chrome 时,它没有指向 localhost,.test
这很奇怪,它应该可以正常工作。如果有人对此有任何意见,请随意。
谨防虽然这个解决方案在我的系统上有效,但它被认为会在 OSX 系统上导致一些意外行为。
从这个答案开始,在 Chrome 74 上,无法禁用 Chrome 自己的 DNS 主机解析器,除了这些 TLD 之外,所有主机条目都将被忽略