《圖解HTTP》讀書筆記——http狀態碼

HTTP狀態碼

狀態碼由3位數字和原因短語組成,例如:200 OK
數字中的第一位指定了響應類別,響應類別有以下5種:

類別 原因短語
1XX Informational(信息性狀態碼) 接收的請求正在處理
2XX Success(成功狀態碼) 請求正常處理完畢
3XX Redirection(重定向) 需要進行附加操作以完成請求
4XX Client Error(客戶端錯誤狀態碼) 服務器無法處理請求
5XX Server Error (服務器錯誤代碼) 服務器處理請求出錯

200 OK: 表示從客戶端發來的請求在服務端被正常處理了。

204 No Content: 請求處理成功,但沒有資源可返回;
該狀態碼代表服務器接收的請求已經成功處理,但在返回的響應報文中不含實體的主體部分;
例如:從瀏覽器發出請求處理後,返回204響應,那麼瀏覽器顯示的頁面不發生更新;

206 Partial Content:該狀態碼錶示客戶端進行了範圍請求,而服務器成功執行了這部分的GET請求;響應報文中包含了由Content-Range指定範圍的實體內容

301 Moved Permanently: 永久性重定向;
該狀態碼錶示請求的資源已被分配了新的URI,以後應使用資源現在所指的URI;
如果已經把資源對應的URI保存爲書籤了,這時應該按Location首部字段提示的URI重新保存;

302 Found: 臨時性重定向,該狀態碼錶示請求的資源已被分配了新的URI,希望用戶(本次)能使用新的URI訪問;

303 See Other:該狀態碼錶示由於請求對應的資源存在着另一個URI,應使用GET方法定向獲取請求的資源;

303狀態碼明確表示客戶端應當採用GET方法獲取資源;
301,302標準是禁止將POST方法改變成GET方法的;

注意: 當301,302,303響應狀態碼返回時,幾乎所有的瀏覽器都會把POST改成GET,並刪除請求報文內的主體,之後請求會自動再次發送;

304 Not Modified:資源已找到,但未符合條件請求
該狀態碼錶示客戶端發送附帶條件的請求時,服務器端允許請求訪問資源,但未滿足條件的情況;
304狀態碼返回時,不包含任何響應的主體部分。

307 Temporary Redirect: 臨時重定向;
該狀態碼與302 Found 有着相同的含義;302標準禁止POST變換成GET,但實際使用時大家並不遵守;
307會遵照瀏覽器標準,不會從POST變成GET;

400 Bad Request: 該狀態碼錶示請求報文中存在語法錯誤;當錯誤發生時,需要修改請求的內容後再次發送。另外,瀏覽器會像200 OK 一樣對待該狀態碼

401 Unauthorized : 該狀態碼錶示發送的請求需要有通過HTTP認證(BASIC認證,DIGEST認證)的認證信息;
另外若之前已進行過1次請求,則表示用戶認證失敗
返回含有401的響應必須包含一個適用於被請求資源的WWW-Authenticate首部用以質詢用戶信息。當瀏覽器初次接收到401響應,會彈出認證用的對話窗口

403 Forbidden :該狀態碼錶明對請求資源的訪問被服務器拒絕了。

404 Not Found :該狀態碼錶明服務器上無法找到請求的資源。
除此之外,也可以在服務端拒絕請求且不想說明理由時使用。

500 Internal Server Error :該狀態碼錶明服務器端在執行請求時發生了錯誤。也有可能是應用存在的bug 或某些臨時的故障

503 Service Unavailable:該狀態碼錶明服務器暫時處於超負載或正在進行停機維護,現在無法處理請求。
如果事先得知解除以上狀況需要的時間,最好寫入RetryAfter首部字段再返回給客戶端

注意: 狀態碼和狀況不一致也是有可能發生的。
例如:Web應用程序內部發生錯誤,狀態碼依然返回200OK

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章