您的位置:首頁>手機>正文

來談一談:除了404 HTTP網頁狀態碼還有些什麼?

在這個廣域網路中,我們所有人都一定會看到3個Logo:測試你網速的藍色熊掌,令你絕望的載入圓圈,還有“褲子都脫了就給我看這個?”的404頁面。

前兩個好歹還能讓你看點東西,而最後一個則是最糟糕的用戶體驗——除了告訴你打不開網頁就似乎真的什麼也沒有了,不知道各位有沒有想過這個404是怎麼產生的,除了404還有什麼?

今天我們就來談一談那些狀態碼。

404和HTTP狀態碼

上面所說的404其實是一種標準的HTTP返回代碼,官方名稱是HTTP狀態碼(HTTP Status Code),用於表示網頁伺服器HTTP的回應狀態。但似乎一般人都不會仔細研究這些HTTP狀態碼和這些狀態碼對開發人員的影響。也許,一個開發人員就算不知道這些狀態碼也能開發出一個網站,但如果企業要開發一個大型網站,在某些時候需要微調或系統整合需要到更底層的網路工作時,就有可能遇到瓶頸,特別是在出錯時更加明顯。對於狀態碼的分類有三個層級,就好像404那樣用3三個數字表示,分為大類,中類和小類。值得一提的是,在IIS(Internet資訊服務)中還有不少微軟制定的擴充狀態碼,格式類似404.1這樣,能更深層次的讓開發者清楚出錯原因。

在進行請求的時候,我們看到的都只是伺服器最後返回來的狀態碼,比如出錯的404和成功的200,但是實際上在請求的過程中,會有很多的狀態碼在快速變化,除非是類似打斷點的操作,一步操作停一下,否則是不能看出這些狀態碼是怎麼變化的,這就導致在伺服器響應過程中有很多狀態碼我們都看不到。

首先,我們要知道幾乎所有的HTTP狀態碼都被分成了五大類: 1開頭的表示伺服器收到請求並需要請求這繼續處理; 2開頭的成功回應,表示成功處理了請求; 3開頭的重定向,引導流覽器跳轉到另一個資源頁面; 4開頭表示請求出錯,妨礙了伺服器的處理,伺服器會返回一個狀態碼解釋到底是什麼錯誤; 5開頭的表示伺服器錯誤,並不是請求者的原因;

就拿404舉個例子,作為最出名的狀態碼,我們想來詳細解釋下404這三個數字的含義:第一個4表示用戶端出錯,第二個0表示請求者把網址打錯了,最後的4表示4開頭的錯誤狀態碼中排第四。

那麼404是怎麼產生的呢?當用戶在位址欄輸入一個網址後,這時候IIS首先會檢測用戶輸入的位址是否有對應的網頁資訊,如果沒有,IIS就會通過伺服器想使用者返回404錯誤狀態碼提示,告訴使用者找不到位址對應的網頁資訊,但伺服器並不清楚這種情況是暫時性的還是永久性的。出現404最多的原因就是使用者輸入了錯誤的連結,或者無法回應並找不到原因,也有可能就是網頁被刪除了。

為什麼要設計404頁面

以4xx開頭的錯誤都是跟“用戶端”有關,比如用戶可能訪問了不存在的頁面,使用者許可權不足或者未提供有效的驗證資訊(輸入錯誤的帳號密碼等)。儘管404頁面被使用者流覽到的概率相對于全站的其他頁面來說要小得多,但頁面難免會出錯,無論是用戶的誤操作還是伺服器的原因,作為網站開發者也無法控制錯誤頁面的出現,但開發者可以通過設計一個特別的404錯誤頁面將使用者失望度降到最低,開發者需要在這個頁面很好的把資訊傳達給使用者,並引導用戶進行下一步的操作。

還有什麼比較出名的狀態碼?

其實除了404 Not Found外,還有很多HTTP狀態碼,這些狀態碼都有自己的含義,所以我們說說一些比較常見的狀態碼以及它們的表達資訊。

400錯誤請求:400代表語義有誤,伺服器無法理解用戶的請求,除非進行修改,不然沒必要一邊按F5一邊噴伺服器垃圾。比如說別把www.baidu.com.打成com.baidu.www.,否則伺服器是不知道你在說什麼鳥語。在減少這類錯誤的道路上,偉大的人類發明了搜尋引擎,容錯率隨之提高。

401未授權:一般來說該錯誤消息表明你首先需要登錄(輸入有效的用戶名和密碼)。如果你不輸入這些資訊,就會有401錯誤,這意味著驗證資訊出錯,伺服器無法識別你的身份。

403禁止:有句話叫“拉不出屎千萬別怪地球沒引力”,出現403是因為伺服器拒絕了你的位址請求,或者你根本沒許可權訪問網站,提供身份驗證也沒用,也就是說,用戶被禁止訪問了。然而除非與Web伺服器管理員聯繫,否則一旦遇到403狀態碼都無法自行解決。

408請求超時:遇到408意味著你的請求發送到該網站花的時間比該網站的伺服器準備等待的時間要長,即連結超時。408錯誤往往難以解決,通常涉及系統工作量或系統操作中的一次性變化。如果使用者持續看到408錯誤,管理員首先要考慮到Web伺服器的工作量,特別是在產生408錯誤的時間段,另外網路流量激增也可能導致用戶無法訪問網頁從而出現該錯誤。

410永久刪除:如果用戶訪問的網頁被永久刪除,伺服器就會返回410代碼。410實際上和404有點相似,在伺服器不確定這個情況是不是永久的情況下,應該使用404狀態碼。410回應的目的主要是説明網站管理員維護網站,通知用戶這個網頁資源已經不能再使用,並且伺服器擁有者希望所有指向這個資源的遠端連結也被刪除。不過之後的事,就涉及到301和302返回碼了。

301永久移動,302臨時移動:在優化網站的時候,301重定向是網站管理員必用的,在網頁被移動後多數情況下流覽器會自動定向到新的URI(統一資源識別項),並且以後任何新的請求都應使用新的URI來代替。而302只是URI被理解為臨時交換而已,用戶端還是會繼續使用原來的位址發送請求。這兩種現象出現在網頁的功能變數名稱更換後,搜尋引擎還使用原有功能變數名稱位址訪問URI,如果搜尋引擎得到301返回碼,那麼搜尋引擎就知道管理員更換了功能變數名稱,下次就會自動用新功能變數名稱來索引網站。

509超過頻寬限制:相比其他500狀態碼,509算是一個特殊的存在。之所以特殊,是因為這個錯誤要用錢來解決。509並不是官方的狀態碼,但是仍然被廣泛使用。正如名字所示,網站流量增大,頻寬不夠用就會出現這類錯誤,網站管理員只能掏錢向主機商買流量。

除了上述所說的一部分HTTP狀態碼外,還有很多其他的狀態碼,比如100,200等,這些狀態碼都有自己的資訊定義和作用,限於篇幅原因只能列舉一些很常見的狀態碼。HTTP狀態碼通常都與使用者的流覽體驗息息相關,它能告訴用戶端當前發生了什麼事,或者說當前Web伺服器的回應狀態。作為開發者有必要瞭解這些狀態碼,能夠明白問題出在哪,從而針對性地解決問題。

喜欢就按个赞吧!!!
点击关闭提示