我們訪問網站都是通過域名進行訪問的,偶爾會使用網站IP進行訪問,如學校通常使用IP登錄教務處,但很多的時候我們無法通過ip進行訪問其他網站,這就涉及到服務器的問題了。
網站都是依托在服務器上面的,而服務器有很多種,阿里雲有ECS、虛擬主機等。不得不說的是我們在訪問網站的時候會涉及到一個DNS解析的過程,是將瀏覽器地址欄的域名轉化成IP地址的一個過程,這個過程是由DNS服務器執行的,不多說了,詳見(相關文檔:一次完整的HTTP請求過程)。
一般的網站會選擇放在虛擬主機,且在主機上放置了很多個網站,而每個網站綁定1個或以上域名,虛擬主機上,例如Apache主機的配置會將對應的ip解析到對應的網站目錄的,實現一台服務器上配置多個站點;一般用戶在訪問的時候,會產生一個http請求報文,上面的host信息可以提供給服務器,告訴服務器要訪問的域名,從而實現一台主機綁定一個IP,即使有多個網站,也不會相互干擾。但使用IP訪問,主機不知道用戶訪問的具體目錄,請求便會出現錯誤。
這里指的是共享主機,如果是獨立的主機,網站則是可以使用IP進行訪問的。

如果就想用ip形式訪問,可以手動設置Host頭域信息。
java中以org.apache.http.client.methods.HttpGet實現http請求為例,解決方法HttpGet httpGet = new HttpGet(url);
httpGet.setHeader(“Host”, ServerHostname);
