在網絡上發送請求後,經常會根據請求的狀態碼去判斷請求的成功失敗與否,常見的狀態碼有200,404,500。
不過你以為HTTP請求的狀態碼就只有這麼幾個麼?其實是遠遠比這個多的。
今天這篇文章我們就一起來看看HTTP請求中常用的狀態碼吧。
HTTP狀態碼
2XX-請求成功以2開頭的2XX類的狀態碼,都表示請求成功,伺服器正確執行了請求的操作。例如POST請求,在請求體中發送的數據會被伺服器端正確的處理,例如寫資料庫操作。
在2XX類的狀態碼中,最常見的就是200了,至少在我目前是沒有見過請求成功後,狀態碼不是200的。因此我們只需要知道200的狀態碼表示的含義即可。
狀態碼200
3XX-重定向以3開頭的3XX類的狀態碼,都表示請求重定向,伺服器端會返回信息告知瀏覽器如何做後續操作才能成功處理請求。
接下來我們看看有哪些需要掌握的3XX狀態碼。
301狀態碼表示的是資源永久重定向,比如請求資源A的URI-A1,但是伺服器端返回301,並指定了一個新的URI-A2,這就表示以後請求資源A,就只能用URI-A2了。
狀態碼301
302狀態碼表示的是資源的臨時重定向,比如請求資源A的URI-A1,但是伺服器端返回301,並指定了一個新的URI-A2,這時資源的位置臨時用URI-A2表示,以後有可能還會進行更改,因此這個URI-A2並不是永久的。
狀態碼302
303狀態碼表示在服務端找到你需要的資源,但是這個資源存在另一個URI,而且希望客戶端在後續的請求中使用GET方法去請求返回的新URI。
狀態碼303
4XX-客戶端錯誤以4開頭的4XX類的狀態碼,都表示是客戶端的錯誤。
401表示服務端需要客戶端提供一些認證信息,如果認證不通過,將無法向伺服器端發送請求。這種情況尤其會出現在瀏覽器首次發送請求時,伺服器端需要客戶端的認證信息,最直觀的信息是會在瀏覽器上彈出一個輸入框,需要用戶填寫認證信息。
狀態碼401
403表示伺服器端拒絕接受客戶端發送過來的請求,而且一般不會給出提示原因,為何給予拒絕。
不過一般會是因為用戶無權限訪問造成的。在我工作過程中,經常會遇到403的問題,因為我們對接口的權限管理很嚴格,如果新增的接口沒有正確配置權限,就會造成403的問題。
狀態碼403
404可能是所有程式設計師最熟悉的狀態碼了吧,無需過多描述,就是請求的資源在伺服器端不存在,一般為請求的URL不對。
狀態碼404
405表示的是請求的URL雖然能被伺服器識別,但是不允許使用該方法。
需要注意的是:GET和HEAD方法,伺服器端總是會允許執行的。
出現405狀態碼的常見原因是,當服務端定義的請求類型與客戶端發送的類型不一致,比如伺服器端定義的方法為POST,而客戶端發送請求類型是GET。
5XX伺服器端錯誤以5開頭的5XX型狀態碼都表示伺服器端錯誤。
500狀態碼表示的是伺服器內部執行異常,一般都表現為程序上的bug,例如代碼在執行過程中拋出異常,例如常見的空指針。
狀態碼500
502狀態碼一般會展現bad gateway錯誤網關類型的信息。
主要是由於客戶端向伺服器端請求超時,比如在伺服器端網絡狀況不好的情況下,同時又有多個客戶端向伺服器端發送請求,會造成伺服器端資源不夠,無法正常響應,便會返回這個結果。
一般最簡單的解決方就是刷新的方式,有很多由於有緩存的情況,直接從本地拿數據,就不會再報502錯誤。
503狀態碼表示伺服器無法處理請求,一般表現為伺服器宕機或者處於超負荷狀態。不過這一般都是暫時性的情況,在服務重啟或者負載均衡處理後,服務會繼續處於可用狀態。
狀態碼503
504狀態碼一般網關在轉發過程中,超過設定的時間仍未收到上遊伺服器的響應。
今天這篇文章主要介紹了一些常用的HTTP狀態碼,這些狀態碼會經常用於判斷服務的可用性上,也很方便的適用於前後端聯調時出錯的判斷,大家要好好掌握~