HTTP狀態碼詳解

今夜無鳴發表於2020-11-12

前言

我想現在在上網的人,不可能不會不遇見到這種事情,就是我們在瀏覽器進入一個網頁時,有時候網頁會給你報錯,例如下圖出現的錯誤:

而圖中顯示的404就是我們所訪問網頁的瀏覽器返回的一個HTTP狀態碼,所以說HTTP狀態碼是會出現在我們上網的過程,它是網際網路不可缺少的一部分,而且學習好HTTP狀態碼對我們瞭解網際網路有很大的幫助。

什麼是HTTP狀態碼

首先我們先解釋一下HTTP狀態碼是啥,HTTP狀態碼(英語:HTTP Status Code)是用以表示網頁伺服器超文字傳輸協議響應狀態的3位數字程式碼

所以我們可以知道HTTP狀態碼是由3位數字程式碼顯示的,而且它的第一位數字代表了響應的型別,後兩位則沒有分類的作用。

那HTTP狀態碼有什麼用呢?

當我們請求訪問一個網站的時候,我們的瀏覽器會向網站的伺服器傳送一個請求。而伺服器收到請求後便會傳送一個包含HTTP狀態碼的訊息頭,以響應瀏覽器的請求,而瀏覽器通過HTTP狀態碼來判斷下一步該執行什麼操作,所以說我們可以用HTTP狀態碼來了解當前Web伺服器的執行狀況。

HTTP狀態碼的分類

瞭解完什麼是HTTP狀態碼後,我們要對HTTP狀態碼進行一個分類,HTTP狀態碼一般可以分為五類:

型別 型別說明
100-199 接受的請求正在處理
200-299 請求正常處理完畢
300-399 需要進行附加操作以完成請求
400-499 客戶端請求出錯,伺服器無法處理請求
500-599 伺服器處理請求出錯

各類HTTP狀態碼的說明

100-199的狀態碼:

程式碼 程式碼說明
100 請求者應當繼續提出請求。伺服器返回此程式碼則意味著,伺服器已收到了請求的第一部分,現正在等待接收其餘部分。
101 請求者已要求伺服器切換協議,伺服器已確認並準備進行切換。

200-299的狀態碼

程式碼 程式碼說明
200 伺服器已成功處理了請求。通常,這表示伺服器提供了請求的網頁。如果您的 robots.txt 檔案顯示為此狀態,那麼,這表示 Googlebot 已成功檢索到該檔案。
201 請求成功且伺服器已建立了新的資源。
202 伺服器已接受了請求,但尚未對其進行處理。
203 伺服器已成功處理了請求,但返回了可能來自另一來源的資訊。
204 伺服器成功處理了請求,但未返回任何內容。
205 伺服器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文件檢視(例如清除表單內容以輸入新內容)。
206 伺服器成功處理了部分 GET 請求。

300-399的狀態碼

程式碼 程式碼說明
300 伺服器根據請求可執行多種操作。伺服器可根據請求者 (User agent) 來選擇一項操作,或提供操作列表供請求者選擇。
301 請求的網頁已被永久移動到新位置。伺服器返回此響應(作為對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。您應使用此程式碼通知 Googlebot 某個網頁或網站已被永久移動到新位置。
302 伺服器正從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。此程式碼與響應 GET 和 HEAD 請求的 301 程式碼類似,會自動將請求者轉到不同的位置。但由於 Googlebot 會繼續抓取原有位置並將其編入索引,因此您不應使用此程式碼來通知 Googlebot 某個頁面或網站已被移動。
303 當請求者應對不同的位置進行單獨的 GET 請求以檢索響應時,伺服器會返回此程式碼。對於除 HEAD 請求之外的所有請求,伺服器會自動轉到其他位置。
304 自從上次請求後,請求的網頁未被修改過。伺服器返回此響應時,不會返回網頁內容。如果網頁自請求者上次請求後再也沒有更改過,您應當將伺服器配置為返回此響應(稱為 If-Modified-Since HTTP 標頭)。由於伺服器可以告訴 Googlebot 自從上次抓取後網頁沒有更改過,因此可節省頻寬和開銷。
305 請求者只能使用代理訪問請求的網頁。如果伺服器返回此響應,那麼,伺服器還會指明請求者應當使用的代理。
307 伺服器正從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。此程式碼與響應 GET 和 HEAD 請求的 301 程式碼類似,會自動將請求者轉到不同的位置。但由於 Googlebot 會繼續抓取原有位置並將其編入索引,因此您不應使用此程式碼來通知 Googlebot 某個頁面或網站已被移動。

400-499的狀態碼

程式碼 程式碼說明
400 伺服器不理解請求的語法。
401 請求要求進行身份驗證。登入後,伺服器可能會返回對頁面的此響應。
403 伺服器拒絕請求。如果在 Googlebot 嘗試抓取您網站上的有效網頁時顯示此狀態程式碼(您可在 Google 網站管理員工具中診斷下的網路抓取頁面上看到此狀態程式碼),那麼,這可能是您的伺服器或主機拒絕 Googlebot 對其進行訪問。
404 伺服器找不到請求的網頁。例如,如果請求是針對伺服器上不存在的網頁進行的,那麼,伺服器通常會返回此程式碼。如果您的網站上沒有 robots.txt 檔案,而您在 Google 網站管理員工具"診斷"標籤的 robots.txt 頁上發現此狀態,那麼,這是正確的狀態。然而,如果您有 robots.txt 檔案而又發現了此狀態,那麼,這說明您的 robots.txt 檔案可能是命名錯誤或位於錯誤的位置。(該檔案應當位於頂級域名上,且應當名為 robots.txt)。如果您在 Googlebot 嘗試抓取的網址上發現此狀態(位於"診斷"標籤的 HTTP 錯誤頁上),那麼,這表示 Googlebot 所追蹤的可能是另一網頁中的無效連結(舊連結或輸入有誤的連結)。
405 禁用請求中所指定的方法。
406 無法使用請求的內容特性來響應請求的網頁。
407 此狀態程式碼與 401(未授權)類似,但卻指定了請求者應當使用代理進行授權。如果伺服器返回此響應,那麼,伺服器還會指明請求者應當使用的代理。
408 伺服器等候請求時超時。
409 伺服器在完成請求時發生衝突。伺服器必須包含有關響應中所發生的衝突的資訊。伺服器在響應與前一個請求相沖突的 PUT 請求時可能會返回此程式碼,同時會提供兩個請求的差異列表。
410 如果請求的資源已被永久刪除,那麼,伺服器會返回此響應。該程式碼與 404(未找到)程式碼類似,但在資源以前有但已經不復存在的情況下,有時會替代 404 程式碼出現。如果資源已被永久刪除,那麼,您應當使用 301 程式碼指定該資源的新位置。
411 伺服器不會接受包含無效內容長度標頭欄位的請求。
412 伺服器未滿足請求者在請求中設定的其中一個前提條件。
413 伺服器無法處理請求,因為請求實體過大,已超出伺服器的處理能力。
414 請求的 URI(通常為網址)過長,伺服器無法進行處理。
415 請求的格式不受請求頁面的支援。
416 如果請求是針對網頁的無效範圍進行的,那麼,伺服器會返回此狀態程式碼。
417 伺服器未滿足"期望"請求標頭欄位的要求。

500-599的狀態碼

程式碼 程式碼說明
500 伺服器遇到錯誤,無法完成請求。
501 伺服器不具備完成請求的功能。例如,當伺服器無法識別請求方法時,伺服器可能會返回此程式碼。
502 伺服器作為閘道器或代理,從上游伺服器收到了無效的響應。
503 無法使用伺服器(由於超載或進行停機維護)。通常,這只是一種暫時的狀態。
504 伺服器作為閘道器或代理,未及時從上游伺服器接收請求。
505 伺服器不支援請求中所使用的 HTTP 協議版本。

結尾

HTTP狀態碼暫時就說這麼多了,在未來的網際網路會越發複雜,肯定會出現更多的狀態碼,不過這都是後話了,感謝各位的觀看。

相關文章