圖解HTTP學習記錄(四)
阿新 • • 發佈:2018-11-19
HTTP狀態碼
狀態碼的職責是當客戶端向伺服器端傳送請求時,描述返回的請求結果。藉助狀態碼,使用者可以知道伺服器
端是正常處理了請求,還是出現了錯誤。
2XX 成功
200 OK
表示從客戶端發來的請求在伺服器端被正常處理了
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 方法定向獲取請求的資源。
303 狀態碼和 302 Found 狀態碼有著相同的功能,但 303 狀態碼明確表示客戶端應當採用 GET 方法獲取資
源,這點與 302 狀態碼有區別。
本書採用的是 HTTP/1.1,而許多 HTTP/1.1 版以前的瀏覽器不能正確理解 303 狀態碼。雖然 RFC 1945 和 RFC 2068 規範不
允許客戶端在重定向時改變請求的方法,但是很多現存的瀏覽器將 302 響應視為 303 響應,並且使用 GET 方式訪問在
Location 中規定的 URI,而無視原先請求的方法。所以作者說這裡使用 303 是最理想的。——譯者注
- 304 Not Modified
該狀態碼錶示客戶端傳送附帶條件的請求 2 時,伺服器端允許請求訪問資源,但未滿足條件的情況。304 狀
態碼返回時,不包含任何響應的主體部分。304 雖然被劃分在 3XX 類別中,但是和重定向沒有關係。 - 307 Temporary Redirect
臨時重定向。該狀態碼與 302 Found 有著相同的含義。儘管 302 標準禁止 POST 變換成 GET,但實際使用
時大家並不遵守。
307 會遵照瀏覽器標準,不會從 POST 變成 GET。但是,對於處理響應時的行為,每種瀏覽器有可能出現不
同的情況
4XX客戶端錯誤
- 400 Bad Request
該狀態碼錶示請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容後再次傳送請求。另外,瀏覽器
會像 200 OK 一樣對待該狀態碼。 - 401 Unauthorized
該狀態碼錶示傳送的請求需要有通過 HTTP 認證(BASIC 認證、DIGEST 認證)的認證資訊。另外若之前已
進行過 1 次請求,則表示用 戶認證失敗 - 403 Forbidden
該狀態碼錶明對請求資源的訪問被伺服器拒絕了。伺服器端沒有必要給出拒絕的詳細理由,但如果想作說明
的話,可以在實體的主體部分對原因進行描述,這樣就能讓使用者看到了。 - 404 Not Found
該狀態碼錶明伺服器上無法找到請求的資源。除此之外,也可以在伺服器端拒絕請求且不想說明理由時使
用。
5XX伺服器錯誤
500 Internal Server Error
該狀態碼錶明伺服器端在執行請求時發生了錯誤。也有可能是 Web 應用存在的 bug 或某些臨時的故障。
503 Service Unavaliable
該狀態碼錶明伺服器暫時處於超負載或正在進行停機維護,現在無法處理請求。如果事先得知解除以上狀況
需要的時間,最好寫入 RetryAfter 首部欄位再返回給客戶端。