http的狀態碼是什麼?有什麼用?在哪裡看?分別代表什麼意思?
寫在前面:
當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在伺服器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的伺服器會返回一個包含HTTP狀態碼的資訊頭用以響應瀏覽器的請求。本文主要是:關於http狀態碼是什麼,有什麼用,在哪裡檢視狀態碼分別代表什麼意思的分享,這裡面內容也是非常多的,所以在此科普一下,做波分享。這裡面有關鍵詞版本和詳細介紹每個錯誤的版本。
http狀態碼有什麼用?
http狀態碼的核心作用是Web Server伺服器用來告訴客戶端,當前的網頁請求發生了什麼事,或者說當前Web伺服器的響應狀態。所以HTTP狀態碼常用來判斷和分析當前Web伺服器的執行狀況。
我們作為程式猿,需要對這些狀態碼,儘可能瞭解的更多一些,將這些狀態碼一一弄清楚,工作中遇到的時候,能夠明白問題出在哪裡,針對性的解決問題。
常用的http狀態碼:
200 OK 伺服器成功處理了請求(這個是我們見到最多的)
301/302 Moved Permanently(重定向)請求的URL已移走。Response中應該包含一個Location URL, 說明資源現在所處的位置
404 Not Found(頁面丟失)未找到資源
501 Internal Server Error伺服器遇到一個錯誤,使其無法對請求提供服務
常見的HTTP狀態碼的概括(文章下面有詳細的介紹):
1開頭:(被接受,需要繼續處理。)
這一型別的狀態碼,代表請求已被接受,需要繼續處理。這類響應是臨時響應,只包含狀態行和某些可選的響應頭資訊,並以空行結束。
2開頭 (請求成功)
這一型別的狀態碼,代表請求已成功被伺服器接收、理解、並接受
3開頭 (請求被重定向)
這類狀態碼代表需要客戶端採取進一步的操作才能完成請求。通常,這些狀態碼用來重定向,後續的請求地址(重定向目標)在本次響應的 Location 域中指明。
4開頭:(請求錯誤)
這類的狀態碼代表了客戶端看起來可能發生了錯誤,妨礙了伺服器的處理。除非響應的是一個 HEAD 請求,否則伺服器就應該返回一個解釋當前錯誤狀況的實體,以及這是臨時的還是永久性的狀況。這些狀態碼適用於任何請求方法。瀏覽器應當向用戶顯示任何包含在此類錯誤響應中的實體內容。
5開頭:(伺服器錯誤)
這類狀態碼代表了伺服器在處理請求的過程中有錯誤或者異常狀態發生,也有可能是伺服器意識到以當前的軟硬體資源無法完成對請求的處理。除非這是一個HEAD 請求,否則伺服器應當包含一個解釋當前錯誤狀態以及這個狀況是臨時的還是永久的解釋資訊實體。瀏覽器應當向用戶展示任何在當前響應中被包含的實體。
http狀態碼在哪裡檢視?
1.瀏覽器的F12除錯(或者右鍵檢查),network檢視Status,如下圖所示,status就是http返回的狀態碼。
瀏覽器如何檢視狀態碼
2.各種線上輸入網址查詢HTTP狀態的工具:
比如:站長工具,http狀態查詢:http://tool.chinaz.com/pagestatus/
像這樣的網站,也提供這個功能。。。。http://www.3464.com/Tools/PageStatus/
其他的應該還有很多,可以自己去搜索一下。
站長工具查詢http狀態碼
狀態碼的變化轉換:
在進行一個http請求的時候,我們看到的只是最後伺服器返回來的狀態碼,比如出錯了404之類,或者成功了200.這說明整個http狀態請求的過程中,狀態碼都只是最後返回的那個狀態碼嗎?
實際上在請求的過程中,http狀態碼的變化的非常快,像剛才說的1開頭的狀態碼(被接受,需要繼續處理。),這類狀態碼只是一個臨時響應的狀態碼,http請求還是要繼續進行下去的,這種狀態碼是用來反映現在請求進行到哪一步了。除非是類似那種像打斷點的東西,一步操作停一下,才會清晰的看出http狀態碼是如何進行變化的。
http狀態碼的概括:
這裡是對每個http狀態的主要作用進行概括,關於詳細的http狀態有興趣瞭解的朋友們,可以點這裡:HTTP狀態碼,這裡是百度百科的對http狀態碼的詳細解析,是我看到的最全的了。
1開頭:(被接受,需要繼續處理。)
這一型別的狀態碼,代表請求已被接受,需要繼續處理。這類響應是臨時響應,只包含狀態行和某些可選的響應頭資訊,並以空行結束。由於 HTTP/1.0 協議中沒有定義任何 1xx 狀態碼,所以除非在某些試驗條件下,伺服器禁止向此類客戶端傳送 1xx 響應。
100(客戶端繼續傳送請求,這是臨時響應):這個臨時響應是用來通知客戶端它的部分請求已經被伺服器接收,且仍未被拒絕。客戶端應當繼續傳送請求的剩餘部分,或者如果請求已經完成,忽略這個響應。伺服器必須在請求完成後向客戶端傳送一個最終響應。
101伺服器根據客戶端的請求切換協議。只能切換到更高階的協議,例如,切換到HTTP的新版本協議。
102 (代表處理將被繼續執行) 由WebDAV(RFC 2518)擴充套件的狀態碼,代表處理將被繼續執行。
2開頭 這一型別的狀態碼,代表請求已成功被伺服器接收、理解、並接受。
200 (成功) 伺服器已成功處理了請求。 通常,這表示伺服器提供了請求的網頁。
201 (已建立) 請求成功並且伺服器建立了新的資源。
202 (已接受) 伺服器已接受請求,但尚未處理。
203 (非授權資訊) 伺服器已成功處理了請求,但返回的資訊可能來自另一來源。
204 (無內容) 伺服器成功處理了請求,但沒有返回任何內容。
205 (重置內容) 伺服器成功處理了請求,但沒有返回任何內容。
206 (部分內容) 伺服器成功處理了部分 GET 請求。
207 (代表之後的訊息體將是一個XML訊息),並且可能依照之前子請求數量的不同,包含一系列獨立的響應程式碼。
3開頭 (請求被重定向)表示要完成請求,需要進一步操作。 通常,這些狀態程式碼用來重定向。
300 (多種選擇) 針對請求,伺服器可執行多種操作。 伺服器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。
301 (永久移動) 請求的網頁已永久移動到新位置。 伺服器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。
302 (臨時移動) 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。
303 (檢視其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,伺服器返回此程式碼。
304 (未修改)自從上次請求後,請求的網頁未修改過。 伺服器返回此響應時,不會返回網頁內容。
305 (使用代理) 請求者只能使用代理訪問請求的網頁。 如果伺服器返回此響應,還表示請求者應使用代理。
307 (臨時重定向) 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。
4開頭 (請求錯誤)這些狀態程式碼表示請求可能出錯,妨礙了伺服器的處理。
400 (錯誤請求) 伺服器不理解請求的語法。
401 (未授權) 請求要求身份驗證。 對於需要登入的網頁,伺服器可能返回此響應。
403 (禁止) 伺服器拒絕請求。
404 (未找到) 伺服器找不到請求的網頁。
405 (方法禁用) 禁用請求中指定的方法。
406 (不接受) 無法使用請求的內容特性響應請求的網頁。
407 (需要代理授權) 此狀態程式碼與 401(未授權)類似,但指定請求者應當授權使用代理。
408 (請求超時) 伺服器等候請求時發生超時。
409 (衝突) 伺服器在完成請求時發生衝突。 伺服器必須在響應中包含有關衝突的資訊。
410 (已刪除) 如果請求的資源已永久刪除,伺服器就會返回此響應。
411 (需要有效長度) 伺服器不接受不含有效內容長度標頭欄位的請求。
412 (未滿足前提條件) 伺服器未滿足請求者在請求中設定的其中一個前提條件。
413 (請求實體過大) 伺服器無法處理請求,因為請求實體過大,超出伺服器的處理能力。
414 (請求的 URI 過長) 請求的 URI(通常為網址)過長,伺服器無法處理。
415 (不支援的媒體型別) 請求的格式不受請求頁面的支援。
416 (請求範圍不符合要求) 如果頁面無法提供請求的範圍,則伺服器會返回此狀態程式碼。
417 (未滿足期望值) 伺服器未滿足"期望"請求標頭欄位的要求。
5開頭(伺服器錯誤)這些狀態程式碼表示伺服器在嘗試處理請求時發生內部錯誤。
這些錯誤可能是伺服器本身的錯誤,而不是請求出錯。
500 (伺服器內部錯誤) 伺服器遇到錯誤,無法完成請求。
501 (尚未實施) 伺服器不具備完成請求的功能。 例如,伺服器無法識別請求方法時可能會返回此程式碼。
502 (錯誤閘道器) 伺服器作為閘道器或代理,從上游伺服器收到無效響應。
503 (服務不可用) 伺服器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。
504 (閘道器超時) 伺服器作為閘道器或代理,但是沒有及時從上游伺服器收到請求。
505 (HTTP 版本不受支援) 伺服器不支援請求中所用的 HTTP 協議版本。