這個現象困擾了我一段時間。比如在Pycharm里面運行一個Flask程序,如圖所示

在Chrome中一直打不開,換了Firefox,依然如此,但是用mac自帶的safari可以打開。
起初我以為是ip地址的問題,將0.0.0.0換成127.0.0.1和localhost都沒有用。
一時在網上沒找到答案。
Safari能用就用Safari吧,其它先不管了。
后來使用anaconda及Jupyter Notebook時又出現了同樣的情況。不能忍了。
在Stack Overflow上面終於找到了答案,解決方案好簡單。
對於Chrome:
1. 打開setting|高級|系統|打開代理設置
2.mac中會自動打開網絡設置,如圖所示

3. 在‘忽略這些主機與域的代理設置’文本框中加上‘localhost,0.0.0.0,127.0.0.1’,就可以了。
對於Firefox:
1. 打開首選項|高級|網絡
2. 點擊“配置Firefox如何連接至國際互聯網”后面的“設置”
3. 在對話框中選擇“使用系統代理設置”,即上面在mac中修改的代理設置。
另外補充localhost,127.0.0.1和0.0.0.0之間的區別
首先看看ping這3者的結果如下



可見localhost與127.0.0.1都可ping通,而0.0.0.0不能被ping通
另外,我們注意到localhost(127.0.0.1)這一欄,說明兩種有某種關系。
在打開本機的hosts,可以看到,localhost對應的ipv4和ipv6分別是127.0.0.1和::1.

說明localhost是其域名,用於指代this computer或者this host,可以用來獲取運行在本機上的網絡服務
而127.0.0.1屬於{127,}集合中的一個,而所有網絡號為127的地址都被稱之為回環地址,取值范圍為 127.0.0.1-127.255.255.254
對於 0.0.0.0,它是真正表示“本網絡中的本機”。
那它和localhost與127.0.0.1有什么區別呢?打個比方,0.0.0.0就像是章魚的軀干,而localhost與127.0.0.1好比就是章魚的腕,章魚靠腕交流傳遞信息而不是靠軀干。但是所有的腕都是為同一個軀干服務。
再比如,一台服務器,一個外網地址A,一個內網地址B,如果上面一個web應用綁定的端口指定了0.0.0.0,那么通過內網地址或外網地址都可以訪問這個應用。但是如果綁定了內網地址,那么通過外網地址就不能訪問。反之同理。
