天天看點

HTTP的狀态碼

摘自圖解HTTP第4章

當用戶端向伺服器端發送請求時,通過狀态碼可以知道自己的請求結果。

狀态碼的類别

HTTP的狀态碼

接下來介紹一下常用的狀态碼

2XX 成功

  • 200 (OK)請求已經正常處理

表示從用戶端發來的請求已經被伺服器正常處理了。

  • 204 (No Content)請求處理成功,但是沒有資源可傳回。

表示伺服器已經成功處理,但在傳回的響應封包中不含實體的主體部分。另外,也不允許傳回任何實體的主體。浏覽器的頁面不發生更新。

  • 206 (Partial Content) 對資源某一部分的請求

表示用戶端進行了範圍請求,而伺服器成功執行了這部分的GET請求。響應封包中包含有Content-Range指定範圍的實體内容。

3XX 重定向

  • 301 (Moved Permanently) 永久性重定向

表示請求的資源啊已經被配置設定了新的URI,以後應使用資源新的URI。

  • 302 (Found) 臨時性重定向

表示請求的資源已經被配置設定了新的URI,希望使用者本次能使用新的URI通路。和301狀态碼相似,但302狀态碼代表的資源不是永久被移動,而是臨時性的。

  • 303 (See Other) 臨時性重定向

表示請求的資源存在着另一個URI,應使用GET方法定向擷取請求的資源。303狀态碼和302狀态碼有着相同的功能,但是303狀态碼明确表示用戶端應該采用GET方法擷取資源。

比如當使用POST方法通路CGI程式,其執行的處理結果就會傳回303狀态碼,希望用戶端能以GET方法重定向到另一個URI上去。302狀态碼也可以實作同樣的功能,但是,使用303狀态碼是最理想的。

PS:當301、302、303狀态碼被傳回是,幾乎所有的浏覽器都會把POST改成GET,并删除請求封包中的主體,之後請求會自動再次發送。雖然301/302标準是禁止将POST方法改變成GET方法的,但實際使用時單價都會這麼做。

  • 307 Temporary Redirect 臨時性重定向

307和302有着相同的含義,但是307會遵照标準,不會将POST變成GET,但是對于處理響應時的行為,每種浏覽器有可能出現不同的情況。

  • 304 (Not Modified) 資源已經找到,但是未符合條件請求

表示用戶端發送附帶條件(采用GET方法的請求封包中包含 If-Match、If-Modified-Since、If-Range等其中一個字段)的請求時,伺服器允許請求通路資源,但是發生的請求不滿足附帶條件的情況。

4XX 用戶端錯誤

  • 400 Bad Request

表示請求封包中存在文法錯誤。

  • 401 (Unauthorized)

表示發送的請求需要通過HTTP認證(BASIC認證、DIGEST認證)的認證資訊。另外,如果之前已經進性過了1次請求,則表示使用者認證失敗。

  • 403 (Forbidden)

表示請求資源的通路被伺服器拒絕了。

  • 404 (Not Found)

伺服器無法找到請求的資源。

5XX 伺服器錯誤

  • 500 (Internal Server Error)

表示伺服器在執行請求時發生了錯。也有可能是Web應用存在的Bug或某些臨時的故障。

  • 503 (Server Unavailable)

表示伺服器正處于超負載或者正在進行停機維護,無法處理請求。

繼續閱讀