狀態碼
目前 RFC 標準裏規定的狀態碼是三位數,所以取值範圍就是從 000 到 999。但如果把代碼簡單地從 000 開始順序編下去就顯得有點太“low”,不靈活、不利於擴展,所以狀態碼也被設計成有一定的格式。
RFC 標準把狀態碼分成了五類,用數字的第一位表示分類,而 0~99 不用,這樣狀態碼的實際可用範圍就大大縮小了,由 000~999 變成了 100~599。
1××:提示信息,表示目前是協議處理的中間狀態,還需要後續的操作;
2××:成功,報文已經收到並被正確處理;
200 OK”
204 No Content”是另一個很常見的成功狀態碼,它的含義與“200 OK”基本相同,但響應頭後沒有 body 數據。
206 Partial Content”是 HTTP 分塊下載或斷點續傳的基礎,在客戶端發送“範圍請求”、要求獲取資源的部分數據時出現,它與 200 一樣,也是服務器成功處理了請求,但 body 裏的數據不是資源的全部,而是其中的一部分。
3××:重定向,資源位置發生變動,需要客戶端重新發送請求;
301 Moved Permanently”俗稱“永久重定向”,含義是此次請求的資源已經不存在了,需要改用改用新的 URI 再次訪問。
與它類似的是“302 Found”,曾經的描述短語是“Moved Temporarily”,俗稱“臨時重定向”,意思是請求的資源還在,但需要暫時用另一個 URI 來訪問。
304 Not Modified” 是一個比較有意思的狀態碼,它用於 If-Modified-Since 等條件請求,表示資源未修改,用於緩存控制。它不具有通常的跳轉含義,但可以理解成“重定向已到緩存的文件”(即“緩存重定向”)
4××:客戶端錯誤,請求報文有誤,服務器無法處理;
“400 Bad Request”是一個通用的錯誤碼,表示請求報文有錯誤,但具體是數據格式錯誤、缺少請求頭還是 URI 超長它沒有明確說
“404 Not Found”可能是我們最常看見也是最不願意看到的一個狀態碼,它的原意是資源在本服務器上未找到,所以無法提供給客戶端。
5××:服務器錯誤,服務器在處理請求時內部發生了錯誤
500 Internal Server Error
503 Service Unavailable”表示服務器當前很忙,暫時無法響應服務