2016-09-23 56 views
2

當我嘗試訪問http://mysubdomain.localhost chrome解析爲[::1]80時,即使主機文件中存在該域的明確條目。其他瀏覽器沒有這種行爲。 Firefox,safari和curl都可以解析我的主機文件中給出的IP地址。這是我的主機的全部文件的那一刻:Chrome忽略localhost子域名的hosts文件

## 
# Host Database 
# 
# localhost is used to configure the loopback interface 
# when the system is booting. Do not change this entry. 
## 
127.0.0.1 localhost 
255.255.255.255 broadcasthost 
192.168.88.88 mysubdomain.localhost 

然而,當我試圖訪問鍍鉻http://mysubdomain.localhost,它不能解決以192.168.88.88。這對我來說是個問題,因爲192.168.88.88是在我的電腦上運行的虛擬機。我可以將域名更改爲http://mysubdomain.localhttp://mysubdomain.dev,但這需要我更新項目中許多人使用的配置文件,我寧願避免這樣做,因爲我可能會破壞他們工作流程的某些方面。

火狐

enter image description here

捲曲(如所期望的工作)(工作根據需要)

enter image description here

瀏覽器(如所期望不工作)

enter image description here

我已經嘗試了一些事情:從chrome://net-internals/#dns

    • 我不使用代理
    • 我已清除瀏覽器緩存多次
    • 我已經清除DNS緩存我已經重新啓動機器數次
    • 我已經清除與終端命令系統DNS緩存sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder
    • 我試圖隱身模式幾次
    • 我試圖創建一個新的Chrome用戶帳戶

    系統信息:
    Chrome版本:53.0.2785.116
    OS版本:MAC OS 10.11.6(酋長)

  • 回答

    5

    經進一步審查,我認爲這是unfortunately working as designed。從鉻問題隊列:

    這樣做是爲安全緩解,如OS X的解析器不能正常保證.localhost域不查詢的網絡,這是確保.localhost是一個關鍵的安全特性上真正地方。因爲我們不能相信解析器來做安全的事情,所以我們不能相信解析器(即使它可能是安全的)... ...

    安全風險不是關於正確配置的服務器vs不正確配置的服務器。這是一個DNS解析器不應該將foo.localhost請求發送到網絡。如果是這樣,網絡攻擊者可以將「foo.localhost」指向他們選擇的任何IP。這很糟糕,因爲「localhost」(和「* .localhost」)具有特殊權限(c.f. http://www.w3.org/TR/powerful-features/#is-origin-trustworthy),並且因爲它們具有這些特殊權限,所以它們需要安全。

    事實上,似乎鉻可能在部分其中規定正確實施RFC-6761了一堆的唯一工具:

    名稱解析API和庫要始終認識到本地主機 名稱特殊,應該返回IP回送地址 用於地址查詢和對所有其他查詢 類型的否定迴應。名稱解析API不應將 localhost名稱的查詢發送到其配置的緩存DNS服務器。

    因此,似乎沒有辦法解決這個問題。我會將我的虛擬機的域名更改爲http://mysubdomain.local

    +1

    不要忘記,Mac OS X上的Bonjour使用.local TLD。我建議不要使用該頂級域名。 Google顯然已經向Google申請了.dev。 我一直在說YEARS現在我們需要爲本地開發提供一個專門的TLD。這真是可悲。 –