1. 程式人生 > >圖解HTTP學習記錄(四)

圖解HTTP學習記錄(四)

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 首部欄位再返回給客戶端。