摘自圖解HTTP第4章
當用戶端向伺服器端發送請求時,通過狀态碼可以知道自己的請求結果。
狀态碼的類别
接下來介紹一下常用的狀态碼
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)
表示伺服器正處于超負載或者正在進行停機維護,無法處理請求。