本章主要內容是瞭解 HTTP 狀態碼的工做機制瀏覽器
狀態碼的職責是當客戶端向服務器端發送請求時,描述返回的請求結果。藉助狀態碼,咱們能夠了解此次請求是否在服務器端獲得了正常的處理。緩存
狀態碼從其含以上能夠分爲五種:服務器
類別 | 緣由短語 | |
---|---|---|
1XX | Informational(信息性狀態碼) | 接受的請求正在處理 |
2XX | Success(成功狀態碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態碼) | 須要進行附加操做以完成請求 |
4XX | Client Error(客戶端錯誤狀態碼) | 服務器沒法處理請求 |
5XX | Server Error(服務端錯誤狀態碼) | 服務器處理請求出錯 |
下面介紹一下經常使用的一些狀態碼。orm
表示從客戶端發送的請求被服務器正常處理了。資源
該狀態碼錶示客戶端發送的請求已經在服務器端正常處理了,可是沒有返回的內容,響應報文中不包含實體的主體部分。io
通常在只須要從客戶端往服務器端發送信息,而服務器端不須要往客戶端發送內容時使用。table
該狀態碼錶示客戶端進行了範圍請求,而服務器端執行了這部分的 GET 請求。響應報文中包含由 Content-Range 指定範圍的實體內容。form
3XX 響應狀態碼錶示瀏覽器須要執行某些特殊的處理以正確處理請求。class
永久性重定向。服務器端
該狀態碼錶示請求的資源已經被分配了新的 URI,之後應使用資源指定的 URI。新的 URI 會在 HTTP 響應頭中的 Location 首部字段指定。
臨時重定向。
該狀態碼錶示請求的資源被分配到了新的 URI,但願用戶(本次)能使用新的 URI 訪問資源。
和 302 Moved Permanently 狀態碼類似,可是 302 表明的資源不是被永久重定向,只是臨時性質的。
該狀態碼錶示因爲請求對應的資源存在着另外一個 URI,應使用 GET 方法定向獲取請求的資源。
303 狀態碼和 302 Found 狀態碼有着類似的功能,可是 303 狀態碼明確表示客戶端應當採用 GET 方法獲取資源。
當 30一、30二、303 響應狀態碼返回時,幾乎全部的瀏覽器都會把 POST 改爲 GET,並刪除請求報文內的主體,以後請求會再次自動發送。
30一、302 標準是禁止將 POST 方法變成 GET 方法的,但實際你們都會這麼作。
該狀態碼錶示客戶端發送附帶條件的請求時(GET 請求包含 If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since 中任一首部)服務端容許訪問請求訪問資源,但由於請求沒有知足條件,因此發生 304 Not Modified 重定向,直接使用客戶端緩存的資源。
臨時重定向。
該狀態碼與 302 Found 有着相同含義,儘管 302 標準禁止 POST 變成 GET,可是實際使用時仍是這樣作了。
307 會遵照瀏覽器標準,不會從 POST 變成 GET。可是對於處理請求的行爲時,不一樣瀏覽器仍是會出現不一樣的狀況。
4XX 的結果代表客戶端是發生錯誤的緣由所在。
該狀態碼錶示請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容後再次發送請求。
該狀態碼錶示請求須要經過認證。
該狀態碼代表請求資源的訪問被服務器拒絕了,服務器端沒有必要給出詳細理由,可是能夠在響應報文實體的主體中進行說明。
該狀態碼代表服務器上沒法找到請求的資源。
5XX 的響應結果代表服務端自己發生了錯誤。
該狀態碼代表服務端在執行請求時存在錯誤,也有多是 Web 應用存在的 bug 或者某些臨時故障。
該狀態碼代表服務器暫時處於超負載或正在進行停機維護,如今沒法處理請求。