HTTP之響應狀態碼該怎麼用?
阿新 • • 發佈:2021-11-08
精簡內容
響應報文由響應頭加響應體資料組成,響應頭又由狀態行和頭欄位構成。
狀態行的結構,有三部分:
狀態行裡有用的就只剩下中間的狀態碼(Status Code)了。它是一個十進位制數字,以程式碼的形式表示伺服器對請求的處理結果,就像我們通常編寫程式時函式返回的錯誤碼一樣。
RFC 標準把狀態碼分成了五類,用數字的第一位表示分類,而 0~99 不用,這樣狀態碼的實際可用範圍就大大縮小了,由 000~999 變成了 100~599。
這五類的具體含義是:
1××:提示資訊,表示目前是協議處理的中間狀態,還需要後續的操作;
2××:成功,報文已經收到並被正確處理;
3××:重定向,資源位置發生變動,需要客戶端重新發送請求;
4××:客戶端錯誤,請求報文有誤,伺服器無法處理;
5××:伺服器錯誤,伺服器在處理請求時內部發生了錯誤。
在 HTTP 協議中,正確地理解並應用這些狀態碼不是客戶端或伺服器單方的責任,而是雙方共同的責任。
簡單小結一下。
1.狀態碼在響應報文裡表示了伺服器對請求的處理結果;
2.狀態碼後的原因短語是簡單的文字描述,可以自定義;
3.狀態碼是十進位制的三位數,分為五類,從 100 到 599;
4.2××類狀態碼錶示成功,常用的有 200、204、206;
5.3××類狀態碼錶示重定向,常用的有 301、302、304;
6.4××類狀態碼錶示客戶端錯誤,常用的有 400、403、404;
7.5××類狀態碼錶示伺服器錯誤,常用的有 500、501、502、503。
課後習題
1.你在開發 HTTP 客戶端,收到了一個非標準的狀態碼,比如 4××、5××,應當如何應對呢?
答:統一跳轉到一個報錯頁面
2.你在開發 HTTP 伺服器,處理請求時發現報文裡缺了一個必需的 query 引數,應該如何告知客戶端錯誤原因呢?
答:自定義一個4XX程式碼,告知客戶端缺少了一個query。