基本摘自HTTP常見的錯誤碼。
狀態碼是由RFC2616定義的,第一位指定了響應類別,由3位數字和原因短信組成。
Type | Reason-phase | Note |
---|---|---|
1XX | Informational | 信息性狀態碼,表示接受的請求正在處理 |
2XX | Success | 成功狀態碼,表示請求正常處理完畢 |
3XX | Redirection | 重定向狀態碼,表示需要客戶端進行附加操作 |
4XX | Client Error | 客戶端錯誤狀態碼,表示服務器無法處理請求 |
5XX | Server Error | 服務器錯誤狀態碼,表示服務器處理請求出錯 |
2XX Success
This class of status code indicates that the client's request was successfully received, understood, and accepted.
** 2XX 響應結果表示從客戶端發來的請求在服務端被正確處理了。**
- 200 OK
請求被成功處理,服務器會根據不同的請求方法返回結果:- GET:請求的對應資源會作為響應返回。
- HEAD:請求的對應資源的響應頭(entry-header)會作為響應返回,不包括響應體(message-body)。
- POST:返回處理響應請求的結果。
- 204 No Content
該狀態碼表示服務器接收到的請求已經處理完畢,但是服務器不需要返回響應體。比如客戶端是瀏覽器的話,發出的請求返回204響應,那么瀏覽器顯示的頁面不會發生更新。 - 206 Partial Content
該狀態碼表示客戶端進行了范圍請求,而服務器成功執行了這部分的GET請求。客戶端發起的請求,必須在請求頭中包含Range字段。服務端響應報文中,必須包含由Content-Range指定范圍的實體內容(entity-bodies)。
3XX Redirection
This class of status code indecates that further action needs to be taken by the user agent in order to fullfill the request.
** 3XX 響應結果表明瀏覽器需要某些特殊的處理以完成請求。 **
- 301 Moved Permanently
永久性重定向。該狀態碼表示請求的資源已經被分配了新的URI,并且以后使用資源現在所指的URI。并且根據請求的方法有不同的處理方式:- HEAD:必須在響應頭部Location字段中指明新的永久性的URI。
- GET:除了有Location字段以外,還需要在響應體中附上永久性URI的超鏈接文本。
- POST:客戶端在發送POST請求,收到301響應之后,不應該自動跳轉URI,應讓用戶確認跳轉。
比如,如果一個URI已經在瀏覽器中收藏為書簽,這時應該按照Location首部字段提示的URI重新保存。
例如建立一個書簽:http://wan.bigertech.com
當訪問這個書簽時,請求會被重定向到:http://wan.meizu.com
并且對應的書簽會被改變,指向:http://wan.meizu.com
- 302 Found
臨時性重定向。該狀態碼表示請求已被分配了新的URI,希望用戶本次能使用新的URI訪問。和301 Moved Permanently狀態碼相似,但302狀態碼代表的資源不是被永久移動,只是臨時性質的。如果用戶把一個URI收藏為書簽,302相應不會像301那樣去更新書簽。 - 303 See Other
該狀態碼表示由于請求對應的資源存在另一個URI,應使用GET方法定向獲取請求的資源。303與302不同之處在于302是不會改變請求的方法,如果請求方法是POST的話,重定向的請求也應該是POST。而對于303,使用POST請求的話,重定向的請求也應該是GET請求。
但是有一點是需要注意的,許多HTTP/1.1版以前的瀏覽器不能正確理解303狀態碼,現在現存的瀏覽器將302響應視為303響應,并且使用GET方式訪問Location中規定的URI,而無視原先請求的方法。
在RFC2616中有相關的一段原文:
Note: Many pre-HTTP/1.1 user agents do not understand the 303 status. When interoperability with such clients is a concern, the 302 status code may be used instead, since user agents react to a 302 response as described here for 303.
- 304 Not Modified
該狀態碼表示客戶端發送附帶請求時,服務器端允許請求訪問資源,但未滿足條件的情況。304狀態碼返回時,不包含任何響應的主體部分。附帶條件的請求指的是采用GET方法的請求頭中包含:If-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中任意首部。 - 307 Temporary Redrict
臨時重定向。該狀態碼與302和303的有著類似的含義,不同之處在于,307狀態碼并不會指定客戶端要用什么的請求方法請求重定向地址。(302指定使用原有請求方法,303指定使用GET方法)。
4XX Client Error
The 4XX class of status code is intended for cases in which the client seems to have erred.
** 4XX 的響應結果表明客戶端是發生錯誤的原因所在。 **
- 400 Bad Request
表示該請求報文中存在語法錯誤,導致服務器無法理解該請求。客戶端需要修改請求的內容后再次發送請求。 - 401 Unauthorized
該狀態碼表示發送的請求需要有通過HTTP認證(Basic認證,Digest認證)的認證信息。返回含有401的響應,必須在頭部包含WWW-Authenticate以指明服務器需要哪種方式的認證。
當客戶端再次請求該資源的時候,需要在請求頭中的Authorization包含認證信息。 - 403 Forbidden
該狀態碼表明對請求資源的訪問被服務器拒絕了。服務器沒有必要給出拒絕的詳細理由,但如果想作說明的話,可以在實體的主題部分原因進行描述,這樣就能讓用戶看到了。
未獲得文件系統的訪問權限、訪問權限出現某些問題、從未授權的發送源IP地址試圖訪問等情況都可能發生403響應。 - 404 Not Found
該狀態碼表明服務器上無法找到指定的資源。通常被用于服務器不想透露拒絕請求的原因,或者沒有其他的響應可提供。
5XX Server Error
Response status codes beginning with the digit "5" indicate cases in which the server is aware that it has erred or is incapable of performing the request.
** 5XX 的響應結果表明服務器本身發生錯誤,或者沒有足夠的能力來處理請求。 **
- 500 Internal Server Error
該狀態碼表明服務器在執行請求時發生了錯誤。也有可能是Web應用存在BUG或某些臨時的故障。 - 503 Service Unavailable
該狀態碼表明服務器暫時處于超負載或正在進行停機維護,現在無法處理請求。如果事先得知解除以上需要的時間,最好寫入Retry-After首部字段再返回給客戶端。