我有一個本機 Web 服務偵聽 0.0.0.0:8080 從 chrome 存取時,我使用 abc.localhost:8080/someWebPage,並且 chrome 能夠將主機名稱 abc.localhost 解析為 ::1,而其他瀏覽器則不能。
這是我的/etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.0.1 subdomain1.localhost
我在 Chrome 設定的隱私和安全部分禁用了「預先載入頁面以加快瀏覽和搜尋速度」選項。
我從 chrome://net-internals/#dns 清除了主機緩存,並執行了 ipconfig /flushdns 命令
這是 chrome netlog 的片段,顯示 abc.localhost 已解析為 ::1 :
abc.localhost:8080
Start Time: 2020-03-18 12:52:49.027
t=2574 [st= 0] +SOCKET_ALIVE [dt=1897+]
--> source_dependency = 29267 (TRANSPORT_CONNECT_JOB)
t=2574 [st= 0] +TCP_CONNECT [dt=1]
--> address_list = ["[::1]:8080","127.0.0.1:8080"]
--> canonical_name = ""
t=2574 [st= 0] TCP_CONNECT_ATTEMPT [dt=1]
--> address = "[::1]:8080"
t=2575 [st= 1] -TCP_CONNECT
--> source_address = "[::1]:64756"
t=2575 [st= 1] +SOCKET_IN_USE [dt=56]
誰能解釋一下 google chrome 瀏覽器如何解析主機檔案中未配置的主機名,以及如何停用此行為。
我使用的是 chrome 版本 80.0.3987.132(官方版本)(64 位元),我的作業系統是 windows 10
更新 我在這裡找到了答案Chrome 忽略 localhost 子網域的主機文件它指向 chromium bug tracker https://bugs.chromium.org/p/chromium/issues/detail?id=489973 另一個相關問題 https://bugs.chromium.org/p/chromium/issues/detail?id=455825
Chrome 不再依賴主機文件,它將強制 localhost 和 *.localhost 主機名稱始終解析為環回位址,如https://www.rfc-editor.org/rfc/rfc6761#section-6.3
答案1
出於安全原因,Chrome 會覆蓋 localhost 網域,完全忽略主機檔案和 dns 查找。
答案2
我遇到了類似的問題,然後轉到“設定”->“隱私和安全性”->“安全瀏覽”,在那裡我將其從“標準保護”設定為“無保護”。然後我的 /etc/host 檔案中的位址起作用了,包括類似的位址127.0.0.1 some.domain.org