HTTP詳解(四)——返回結果的HTTP狀態碼

轉載自個人博客0pt1mus

HTTP狀態碼負責表示客戶端HTTP請求的返回結果、標記服務器端的處理是否正常、通知出現的錯誤等工作。

狀態碼告知從服務器端返回的請求結果

狀態碼的職責是當客戶端向服務器端發送請求時,描述返回的請求結果。藉助狀態碼,用戶可以知道服務器端是正常處理了請求,還是出現了錯誤。

2XX成功

2XX的響應結果表明請求被正常處理了。

200 OK

表示衝客戶端發來的請求在服務器端被正常處理了。

在響應報文內,隨狀態碼一起返回的信息會因方法的不同而發生改變。比如,使用GET方法時,對應請求資源的實體會作爲響應返回;而使用HEAD方法時,對應請求資源的實體首部不隨報文主體作爲響應返回(即在響應中只返回首部,不會返回實體的主體部分)。

204 No Content

該狀態碼代表服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分。另外,也不允許返回任何實體的主體。比如,當從瀏覽器發出請求後,返回204響應,那麼瀏覽器顯示的頁面不發生更新。

一般在只需要從客戶端往服務器發送信息,而對客戶端不需要發送新信息內容的情況下使用。

206 Partial Content

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

3XX重定向

301 Moved Permanently

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

302 Found

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

303 See Other

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

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

301、302標準是禁止將POST方法改變成GET方法的,但實際使用時大家都會這麼做。

304 Not Modified

該狀態碼錶示客戶端發送附帶條件的請求時,服務器端允許請求訪問資源,但未滿足條件的情況。304爲滿足條件的情況。304狀態碼返回時,不包括任何響應的主體部分。304雖被劃分在3XX類別中,但是和重定向沒有關係。

附帶條件的請求是指採用GET方法的請求報文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部。

307 Temporary Redirect

臨時重定向。該狀態碼與302 Found有着相同的含義。302標準禁止POST變換成GET,但實際使用時大家並不遵守。307遵照瀏覽器標準,不會從POST變成GET,但是,對於處理響應時的行爲,每種瀏覽器有可能出現不同的情況。

4XX客戶端錯誤

400 Bad Request

該狀態碼錶示請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容後再次發送請求。

401 Unauthorized

該狀態碼錶示發送的請求需要有通過HTTP認證(BASIC認證、DIGEST認證)的認證信息。另外若之前已進行過1次請求,則表示用戶認證失敗。

返回含有401的響應必須包含一個使用於被請求資源的WWW-Authenticate首部用以質詢(challenge)用戶信息。當瀏覽器初次接收到401響應,會彈出認證用的對話窗口。

403 Forbidden

該狀態碼標明對請求資源的訪問被服務器拒絕了。服務器端沒有必要給出拒絕的詳細理由,但如果想作說明的話,可以在實體的主體部分對原因進行描述,這樣就能讓用戶看到了。

404 Not Found

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

5xx服務器錯誤

500 Internal Server Error

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

503 Service Unavailable

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

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