HTTP協議的狀態碼

Web開發者發表於2012-07-05

  對於Web程式設計人員來說,熟悉瞭解HTTP協議的狀態碼是很有必要的,很多時侯可能根據HTTP協議的狀態碼很快就能定位到錯誤資訊!今天整理了一下所有HTTP狀態碼。

  HTTP狀態碼(HTTP Status Code)是用來表示網頁伺服器HTTP 響應狀態的3位數字程式碼。它由RFC 2616規範定義的,並得到RFC 2518RFC 2817RFC 2295RFC 2774RFC 4918等規範擴充套件。所有狀態碼的第一個數字代表了響應的五種狀態之一。

  HTTP/1.1定義的狀態碼值和對應的原因短語(Reason-Phrase)的例子。

  1XX表示:訊息

  這一型別的狀態碼,代表請求已被接受,需要繼續處理。這類響應是臨時響應,只包含狀態行和某些可選的響應頭資訊,並以空行結束。由於HTTP/1.0協議中沒有定義任何1xx狀態碼,所以除非在某些試驗條件下,伺服器禁止向此類客戶端傳送1xx響應。 這些狀態碼代表的響應都是資訊性的,標示客戶應該採取的其他行動。

  “100″ : Continue  客戶端應當繼續傳送請求。這個臨時響應是用來通知客戶端它的部分請求已經被伺服器接收,且仍未被拒絕。客戶端應當繼續傳送請求的剩餘部分.

  “101″ : witching Protocols 伺服器已經理解了客戶端的請求,並將通過Upgrade訊息頭通知客戶端採用不同的協議來完成這個請求。在傳送完這個響應最後的空行後,伺服器將會切換到在Upgrade訊息頭中定義的那些協議。: 只有在切換新的協議更有好處的時候才應該採取類似措施.

  “102″: Processing  由WebDAV(RFC 2518)擴充套件的狀態碼,代表處理將被繼續執行。

  2XX表示:成功

  這一型別的狀態碼,代表請求已成功被伺服器接收、理解、並接受。

  “200″ : OK

  “201″ : Created 已建立

  “202″ : Accepted 接收

  “203″ : Non-Authoritative Information 非認證資訊

  “204″ : No Content 無內容

  “205″ : Reset Content 重置內容

  “206″ : Partial Content 伺服器已經成功處理了部分GET請求。類似於FlashGet或者迅雷這類的HTTP 下載工具都是使用此類響應實現斷點續傳或者將一個大文件分解為多個下載段同時下載。

  “207″: Multi-Status 由WebDAV(RFC 2518)擴充套件的狀態碼,代表之後的訊息體將是一個XML訊息,並且可能依照之前子請求數量的不同,包含一系列獨立的響應程式碼.

  3XX表示: 重定向

  這類狀態碼代表需要客戶端採取進一步的操作才能完成請求。通常,這些狀態碼用來重定向,後續的請求地址(重定向目標)在本次響應的Location域中指明。

  “300″ : Multiple Choices 多路選擇

  “301″ : Moved Permanently  永久轉移

  “302″ : Found 暫時轉移

  “303″ : See Other 參見其它

  “304″ : Not Modified 未修改

  “305″ : Use Proxy 使用代理

  “306″: Switch Proxy  在最新版的規範中,306狀態碼已經不再被使用。

  “307″ : Temporary Redirect 請求的資源現在臨時從不同的URI響應請求。由於這樣的重定向是臨時的,客戶端應當繼續向原有地址傳送以後的請求。只有在Cache-Control或Expires中進行了指定的情況下,這個響應才是可快取的。

  4XX表示: 客戶端錯誤

  這類的狀態碼代表了客戶端看起來可能發生了錯誤,妨礙了伺服器的處理。

  “400″ : Bad Request 錯誤請求

  “401″ : Unauthorized 未認證

  “402″ : Payment Required 需要付費

  “403″ : Forbidden 禁止

  “404″ : Not Found  請求失敗,請求所希望得到的資源未被在伺服器上發現

  “405″ : Method Not Allowed 方法不允許

  “406″ : Not Acceptable 不接受

  “407″ : Proxy Authentication Required 需要代理認證

  “408″ : Request Time-out 請求超時

  “409″ : Conflict 衝突

  “410″ : Gone 失敗

  “411″ : Length Required 需要長度

  “412″ : Precondition Failed 條件失敗

  “413″ : Request Entity Too Large 請求實體太大

  “414″ : Request-URI Too Large 請求URI太長

  “415″ : Unsupported Media Type 不支援媒體型別

  “416″ : Requested range not satisfiable 如果請求中包含了Range請求頭,並且Range中指定的任何資料範圍都與當前資源的可用範圍不重合,同時請求中又沒有定義If-Range請求頭,那麼伺服器就應當返回416狀態碼。

  “417″ : Expectation Failed 在請求頭Expect中指定的預期內容無法被伺服器滿足

  “421 “:There are too many connections from your internet address 從當前客戶端所在的IP地址到伺服器的連線數超過了伺服器許可的最大範圍。通常,這裡的IP地址指的是從伺服器上看到的客戶端地址.

  “422″: Unprocessable Entity 請求格式正確,但是由於含有語義錯誤,無法響應。(RFC 4918 WebDAV)

  “423″: Locked 當前資源被鎖定。(RFC 4918 WebDAV)

  “424″: Failed Dependency 由於之前的某個請求發生的錯誤,導致當前請求失敗,例如PROPPATCH。(RFC 4918 WebDAV)

  “425″: Unordered Collection 在WebDav Advanced Collections草案中定義,但是未出現在《WebDAV順序集協議》(RFC 3658)中。

  “426″:Upgrade Required 客戶端應當切換到TLS/1.0。(RFC 2817)

  “449″: Retry With 由微軟擴充套件,代表請求應當在執行完適當的操作後進行重試。

  5XX表示: 伺服器錯誤

  這類狀態碼代表了伺服器在處理請求的過程中有錯誤或者異常狀態發生

  “500″ : Internal Server Error  伺服器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在伺服器的程式碼出錯時出現

  “501″ : Not Implemented 未實現

  “502″ : Bad Gateway  作為閘道器或者代理工作的伺服器嘗試執行請求時,從上游伺服器接收到無效的響應

  “503″ : Service Unavailable 由於臨時的伺服器維護或者過載,伺服器當前無法處理請求。這個狀況是臨時的,並且將在一段時間以後恢復。

  “504″ : Gateway Time-out 閘道器超時

  “505″ : HTTP Version not supported  伺服器不支援,或者拒絕支援在請求中使用的HTTP版本。這暗示著伺服器不能或不願使用與客戶端相同的版本。響應中應當包含一個描述了為何版本不被支援以及伺服器支援哪些協議的實體。

  “506” : Variant Also Negotiates 由《透明內容協商協議》(RFC 2295)擴充套件,代表伺服器存在內部配置錯誤:被請求的協商變元資源被配置為在透明內容協商中使用自己,因此在一個協商處理中不是一個合適的重點。

  “507” : Insufficient Storage 伺服器無法儲存完成請求所必須的內容。這個狀況被認為是臨時的。WebDAV(RFC 4918)

  “509” : Bandwidth Limit Exceeded 伺服器達到頻寬限制。這不是一個官方的狀態碼,但是仍被廣泛使用。

  “510” : Not Extended 獲取資源所需要的策略並沒有沒滿足。(RFC 2774)

相關文章