HTTP狀態碼負責表示客戶端HTTP請求的返回結果、標記服務器端的處理是否正常、通知出現的錯誤等工做。咱們能夠經過返回的狀態碼來判斷請求是成功或者失敗。git
狀態碼 | 類別 | 緣由短語 |
---|---|---|
1XX | Information(信息性狀態碼) | 接收的請求正在處理 |
2XX | Success(成功狀態碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態碼) | 須要進行附加的操做以完成請求 |
4XX | Client Error(客戶端錯誤狀態碼) | 服務器沒法處理請求 |
5XX | Server Error(服務端錯誤狀態碼) | 服務器處理請求出錯 |
200 OK 表示從客戶端發來的請求在服務端被正常處理了。github
204 No COntent 表示客戶端請求成功可是服務器返回的內容沒有實體的主體內容,也表示不可以返回實體的主體。場景:用在客戶端像服務端發送內容,而客戶端本身不須要作更新。web
206 Partial Content 該狀態碼錶示客戶端進行了範圍請求而且服務器c成功的執行了該GET請求。此時響應報文裏面應該包含Content-Range字段來表示範圍。瀏覽器
301 Moved Permanently 永久重定向。該狀態碼錶示當前請求的資源已經被分配了新的URL,之後使用的話,應該訪問新的URL。服務器
302 Found 臨時重定向。表名稱當前請求的資源已經被分配了新的URL,但願客戶端(本次)使用新的URL來訪問。spa
303 See Other 該狀態碼錶示因爲請求對應的資源存在着另外一個URL,應該使用GET方法定向獲取請求的資源。303 狀態碼和 302 Found 狀態碼有着相同的功能,但 303 狀態碼明確表示客戶端應當採用 GET 方法獲取資源,這點與 302 狀態碼有區別。orm
當 30一、30二、303 響應狀態碼返回時,幾乎全部的瀏覽器都會把
POST 改爲 GET,並刪除請求報文內的主體,以後請求會自動再次
發送。
30一、302 標準是禁止將 POST 方法改變成 GET 方法的,但實際使
用時你們都會這麼作。資源
304 Not Modified 該狀態表示客戶端發送附加條件的請求,而此時服務容許了請求,可是不知足條件,才返回該狀態碼,若是知足就返回200。rem
附加條件通常指的是:GET方法中請求報文中包含If-Mathc、If-Modified-Since、If-Not-Match等,其中的任一請求首部。get
400 Bad Request 該狀態碼代表,客戶端的請求報文中存在語法錯誤。當錯誤發生時,客戶端須要從新修改請求內容後,從新發送請求。
401 Unauthorized 該狀態碼錶示發送的請求須要經過HTTP認證(BASIC認證、DIGEST認證)。另外,若是用戶已經進行過一次請求,那麼返回401則表示認證失敗。
403 Forbidden 該狀態碼代表客戶端請求被服務端拒絕。此時服務端沒有必要對拒絕的緣由進行說明,可是若是須要給出,那麼就能夠在響應實體中加入說明,返回給客戶端。
未得到文件系統的訪問受權,訪問權限出現某些問題(從未受權的發
送源 IP 地址試圖訪問)等列舉的狀況均可能是發生 403 的緣由。
404 Not Found 該狀態代表服務器上沒法定位請求的資源。另外,也能夠在服務器拒絕客戶端請求但不想說明理由的時候返回該狀態碼。
500 Internal Server Error 該狀態代表,服務器在處理請求的時候,服務端內部發生了錯誤。也多是web應用存在着bug或者臨時障礙。
503 Service Unavailable 該狀態代表,服務器正處於超負載和停機維護中,如今沒法處理請求。
狀態碼和情況的不一致
很多返回的狀態碼響應都是錯誤的,可是用戶可能察覺不到這點。
好比 Web 應用程序內部發生錯誤,狀態碼依然返回 200 OK,這種
狀況也常常遇到。github 歡迎Star,歡迎討論