重定向問題淺析

 當我們在瀏覽器的地址欄輸入網址的時候,背後發生了很多的故事,比如客戶端和服務端在在DNS這一層要進行IP和域名的映射;在IP層雙方都需要進行路由的尋址;在鏈路層,雙方都需要進行MAC地址和IP地址的映射。我們今天所要討論的是在應用層這一層所發生的重定向問題。


  這幅圖得到兩個結果:

  1、發生了重定向,即http://www.baidu.com ->https://www.baidu.com

  2、其實我輸入的是baidu.com ,爲什麼Host頭域是www.baidu.com

  第一個問題好理解,作爲行業巨頭,積極推動http2.0,以身作則,這個是我意淫的原因。其實主要目的也是減少用戶搜索被竊聽的風險,這不是我們這次討論的主題,記住發生了重定向。第二個問題請看下一使用chrome瀏覽器的結果:


  顯然chrome並沒有越界,私自幫我加上www,難道IE就這麼不討人喜歡嗎。其實也不是,其實這是我第一次使用chrome訪問baidu.com,而IE則不是。經過我的實驗發現瀏覽器會緩存重定向的結果。比如如果訪問過了百度,再次輸入的時候,瀏覽器會幫你補全www。至於爲什麼加上http而不是https,可能是https遠沒有http應用的廣泛,主要瀏覽器廠商還沒有設置默認加https吧,扯的有點遠,回到重定向。

  對比下面兩幅圖

  訪問www.zte.com.cn

 

  訪問www.zte.com/cn


  得出如下結果:

  1、網址www.zte.com.cn被重定向到www.zte.com.cn/cn/

  2、網址www.zte.com.cn/cn還是被被重定向到www.zte.com.cn/cn/

  這說明"/"很重要,爲甚在訪問百度的時候"/"會被自動加上,而到了這裏就不行了呢?在RFC2616中是這樣規定的:If the abs_path is notpresent in the URL, it MUST be given as "/" when used as aRequest-URI for a resource.說的是在只有域名那一坨的時候,必須加"/",這時候瀏覽器會自動加上"/",但是對於www.zte.com.cn/cn,我並不清楚cn是可執行文件還是文件夾,所以瀏覽器就不能越俎代庖了,沒有加上"/",因此會發生重定向。

  再看下面幾幅圖:

  訪問sina.com


  

  得出如下結果:

  1、訪問sina.com/首先被重定向到www.sina.com/,然後被重定向到www.sina.com.cn/

  2、幾次重定向分成了幾條流來實現,主要是客戶端端口在變化。

  爲什麼要進行這樣的重定向,其實,我們人爲的看這幾個網址,覺得沒什麼差別,但是對於網絡爬蟲來說,比如百度的,如果不重定向的話,他會人爲1中提的網址是三個網址,這樣的話就會分散新浪的網址權值,造成排名下降,爲了權值,我必須重定向啊。當然這也僅是原因之一。至於問題2並不是這次的討論範疇,下次繼續討論。當然上面圖中各個網址緩存時間都是不一樣的,主要與個網站的作用有關。

  以上便是在開發協議過程中無意發現的一些現象,請大家多多吐槽。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章