HTTP 狀態碼表示客戶端 HTTP 請求的返回結果、標記服務器端的處理是否正常或者是出現的錯誤,能夠根據返回的狀態碼判斷請求是否得到正確的處理很重要。
狀態碼由 3 位數字和原因短語組成,例如下圖所示:
數字中的第一位指定了響應類別,後兩位無分類,響應類別有一下 5 種:
狀態碼分類表
類別 | 原因短語 | |
1xx | Informational(信息性狀態碼) | 接受的請求正在處理 |
2xx | Success(成功狀態碼) | 請求正常處理完畢 |
3xx | Redirection(重定向) | 需要進行附加操作以完成請求 |
4xx | Client error(客戶端錯誤) | 客戶端請求出錯,服務器無法處理請求 |
5xx | Server Error(服務器錯誤) | 服務器處理請求出錯 |
各類別常見狀態碼:
2xx (3 種)
200 OK:表示從客戶端發送給服務器的請求被正常處理並返回;
204 No Content:表示客戶端發送給客戶端的請求得到了成功處理,但在返回的響應報文中不含實體的主體部分(沒有資源可以返回);
206 Patial Content:表示客戶端進行了範圍請求,並且服務器成功執行了這部分的 GET 請求,響應報文中包含由 Content-Range 指定範圍的實體內容。
3xx (5 種)
301 Moved Permanently:永久性重定向,表示請求的資源被分配了新的 URL,之後應使用更改的 URL;
302 Found:臨時性重定向,表示請求的資源被分配了新的 URL,希望本次訪問使用新的 URL;
301 與 302 的區別:前者是永久移動,後者是臨時移動(之後可能還會更改 URL)
303 See Other:表示請求的資源被分配了新的 URL,應使用 GET 方法定向獲取請求的資源;
302 與 303 的區別:後者明確表示客戶端應當採用 GET 方式獲取資源
304 Not Modified:表示客戶端發送附帶條件(是指採用 GET 方法的請求報文中包含 if-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since 中任一首部)的請求時,服務器端允許訪問資源,但是請求爲滿足條件的情況下返回改狀態碼;
307 Temporary Redirect:臨時重定向,與 303 有着相同的含義,307 會遵照瀏覽器標準不會從 POST 變成 GET;(不同瀏覽器可能會出現不同的情況);
4xx (4 種)
400 Bad Request:表示請求報文中存在語法錯誤;
401 Unauthorized:未經許可,需要通過 HTTP 認證;
403 Forbidden:服務器拒絕該次訪問(訪問權限出現問題)
404 Not Found:表示服務器上無法找到請求的資源,除此之外,也可以在服務器拒絕請求但不想給拒絕原因時使用;
5xx (2 種)
500 Inter Server Error:表示服務器在執行請求時發生了錯誤,也有可能是 web 應用存在的 bug 或某些臨時的錯誤時;
503 Server Unavailable:表示服務器暫時處於超負載或正在進行停機維護,無法處理請求;