狀態碼的職責是當客戶端向服務器端發送請求時,描述返回的請求結果。藉助狀態碼,用戶能夠知道服務器端是正常處理了請求,仍是出現了錯誤。算法
狀態碼由3位數字和緣由短語組成,數字中第一位指定相應類別,後兩位無分類,有如下5中響應類別。瀏覽器
類別 | 緣由短語 | |
---|---|---|
1XX | Informational(信息性狀態碼) | 接受的請求正在處理 |
2XX | Success(成功狀態碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態碼) | 須要進行附加操做以完成請求 |
4XX | Client Error(客戶端錯誤狀態碼) | 服務器沒法處理請求 |
5XX | Server Error(服務器錯誤狀態碼) | 服務器處理請求出錯 |
記錄在RFC2616
與WebDAV
中的各類HTTP狀態碼加起來有60多種,但咱們經常使用的就14種。緩存
2XX的響應結果代表請求被正常處理。服務器
響應報文中,隨狀態碼一塊兒返回的信息會因方法的不一樣而發生改變。spa
使用GET時,對應請求資源的實體會做爲響應返回。code
使用HEAD時,響應中只返回首部,不返回實體的主體部分。orm
服務器接收請求已成功處理,但返回的響應報文中不含實體的主體部分。圖片
例如瀏覽器發送請求處理後,返回204響應,瀏覽器顯示頁面就不發生更新。資源
通常只須要從客戶端往服務器發送信息,而對客戶端不須要發送新信息內容的狀況下使用。文檔
該狀態碼錶示客戶端進行請求頭中包含Range
字段指定範圍的請求,服務器端成功執行GET請求,響應報文中包含Content-Range
指定範圍的實體內容。
3XX響應結果代表瀏覽器須要執行某些特殊的處理來正確處理請求。
永久重定向。
該狀態碼錶示請求的資源被分配了新的URI,之後應使用響應報文頭部中Location
所指的URI。
舉個例子,若是已經把資源對應的URI保存爲書籤,這時應該按Location首部字段提示的URI從新保存。
臨時重定向。
該狀態碼錶示請求的資源被分配了新的URI,本次應使用響應報文頭部中Location
所指的URI。
舉個例子,若是已經把資源對應的URI保存爲書籤,不須要從新保存。
重定向時使用原有請求方法。
該狀態碼錶示請求對應的資源存放在另外一個URI,應使用GET
方法定向獲取請求的資源。
303狀態碼與302狀態碼有着相同的功能,但303狀態碼明確表示客戶端應當GET
方法獲取資源,這與302狀態碼有着區別。
重定向時使用GET請求方法。
該狀態碼錶示客戶端發送附帶條件的請求時,服務器容許請求訪問資源,但因發生請求未知足條件的狀況,直接返回304 Not Modified,服務器端的資源未變,可直接使用客戶端未過時的緩存。
304狀態碼返回時,不包含任何響應的主體部分。
臨時重定向。該狀態碼與302 Found有着相同含義。但不會指定客戶端的重定向的請求方法。
4XX的響應結果代表客戶端是發生錯誤的緣由所在。
該狀態碼錶示請求報文中存在語法錯誤。當錯誤發生時,須要修改請求的內容後再次發送請求。
該狀態碼錶示發送的請求須要有經過HTTP認證(BASIC認證、DIGEST認證)的認證信息。
返回401的響應必須包含一個適用於被請求資源的WWW-Authenticate
首部用以質詢(challenge)
用戶信息。
瀏覽器初次接受401響應,會彈出認證用的對話窗口。輸入密碼、用戶名以後會再次請求,此時的請求頭中會包含Authorization
首部字段,用來講明認證算法、用戶和密碼。若是受權證書是正確的,服務器就會將文檔返回。
該狀態碼代表對請求資源的訪問被服務器拒絕了。若是服務器想說明爲何拒絕請求,能夠包含實體的主體部分來對緣由進行描述。但這個狀態碼一般是在服務器不想說明拒絕緣由的時候使用的。
未得到文件系統的訪問權限,訪問權限出現某些問題(從未受權的發送源IP地址試圖訪問)等列舉的狀況均可能是發生403的緣由。
該狀態碼錶示服務器上沒法找到請求的資源。除此以外,也能夠在服務器拒絕請求且不想說明的理由時使用。
5XX的響應結果代表服務器自己發生錯誤。
該狀態碼代表服務器在執行請求時發生了錯誤。也有多是Web應用存在的bug活某些臨時故障。
該狀態碼代表服務器暫時處於超負荷或正在進行停機維護,如今沒法處理請求。若是事先得知解除以上情況須要的時間,最好寫入Retry-After
首部字段再返回給客戶端,該字段會告知客戶端應該在多久以後再次發送請求。
《HTTP權威指南》
《圖解HTTP》