HTTP圖解讀書筆記(第四章 返回結果的HTTP狀態碼)
一、狀態碼
5種狀態碼:
具有代表性的14個狀態碼:
2XX
請求被正常處理
- 200 ok
表示客戶端發來的請求在服務端被正常處理了
- 204 no Content
服務端請求處理成功,但是沒有資源返回(響應報文中不含實體的主體),當從瀏覽器發出請求處理後,返回204,那麼瀏覽器的頁面不發生跟新。
- 206 partial Content
客戶端進行了範圍請求,服務端成功執行了這部分的請求,響應報文中包含有Content-Range指定範圍的實體內容
3XX 重定向
表明瀏覽器需要執行某些特殊的處理以正確處理請求。
- 301 moved Permanently
請求的資源已被分配了新的URL,以後應使用資源現在所指的URL。
- 302 Found
臨時性重定向。該狀態碼錶示請求的資源已被分配了新的 URI,希望使用者(本次)能使用新的 URI 訪問
- 303 See Other
該狀態碼錶示由於請求對應的資源存在著另一個 URI,應使用 GET方法定向獲取請求的資源。
303 狀態碼和 302 Found 狀態碼有著相同的功能,但 303 狀態碼明確表示客戶端應當採用 GET 方法獲取資源,這點與302 狀態碼有區別
注意:當 301、302、303 響應狀態碼返回時,幾乎所有的瀏覽器都會把POST 改成 GET,並刪除請求報文內的主體,之後請求會自動再次傳送。
- 304 Not Modified
如果客戶端傳送了一個帶條件的GET 請求且該請求已被允許,而文件的內容(自上次訪問以來或者根據請求的條件)並沒有改變,則伺服器應當返回這個304狀態碼。簡單的表達就是:客戶端已經執行了GET,但檔案未變化。
注: GET方法的請求報文中包含 If-Match,If-ModifiedSince,If-None-Match,If-Range,If-Unmodified-Since 中任一首部
- 307 Temporary Redirect
臨時重定向,同302.307會遵循瀏覽器的標準,不會講post請求變為get
4XX 客戶端錯誤
- 400 Bad Request
請求報文中存在語法錯誤,當錯誤發生時需要修改請求的內容再次傳送
- 401 Unauthorized
該狀態碼錶示傳送的請求需要有通過HTTP認證(BASIC 認證、DIGEST 認證)的認證資訊。另外若之前已進行過 1 次請求,則表示使用者認證失敗。
- 403 Forbidden
請求資源的訪問被伺服器拒絕
- 404 Not Found
伺服器上無法找到請求資源
5XX伺服器錯誤
- 500 Internal Server Error
表示服務端在執行請求時傳送錯誤
- 503 Service Unavailable
伺服器超負荷或者處於停機維護中,如果事先得知解除以上狀況需要的時間,最好寫入RetryAfter 首部欄位再返回給客戶端。