[toc]
# 概念
當(dāng)瀏覽者訪問一個網(wǎng)頁時,瀏覽者的瀏覽器會向網(wǎng)頁所在服務(wù)器發(fā)出請求,。當(dāng)瀏覽器接收并顯示網(wǎng)頁前,,此網(wǎng)頁所在的服務(wù)器會返回一個包含HTTP狀態(tài)碼的信息頭(server header)用以響應(yīng)瀏覽器的請求。
HTTP狀態(tài)碼的英文為HTTP Status Code,。
# 下面是常見的HTTP狀態(tài)碼:
* 200 - 請求成功
* 301 - 資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它URL
* 404 - 請求的資源(網(wǎng)頁等)不存在
* 500 - 內(nèi)部服務(wù)器錯誤
# HTTP狀態(tài)碼分類
HTTP狀態(tài)碼由三個十進(jìn)制數(shù)字組成,,第一個十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩個數(shù)字沒有分類的作用,。HTTP狀態(tài)碼共分為5種類型:
| 分類 | 功能描述 |
| :----:| :---- |
| 1** | 信息,,服務(wù)器收到請求,,需要請求者繼續(xù)執(zhí)行操作 |
| 2** | 成功,操作被成功接收并處理 |
| 3** | 重定向,,需要進(jìn)一步的操作以完成請求 |
| 4** | 客戶端錯誤,,請求包含語法錯誤或無法完成請求 |
| 5** | 服務(wù)器錯誤,服務(wù)器在處理請求的過程中發(fā)生了錯誤 |
# HTTP狀態(tài)碼查詢字典
收集了些常見的狀態(tài)碼,,方便伙伴們查詢使用
| 狀態(tài)碼 | 原因短語 | 功能描述 | 版本 |
| :-----| :---- | :---- |:---- |
| 100 | Continue (繼續(xù)) | 客戶端應(yīng)當(dāng)繼續(xù)發(fā)送請求.這個臨時響應(yīng)是用來通知客戶端它的部分請求已經(jīng)被服務(wù)器接收,且仍未被拒絕.客戶端應(yīng)當(dāng)繼續(xù)發(fā)送請求的剩余部分,或者如果請求已經(jīng)完成,忽略這個響應(yīng).服務(wù)器必須在請求完成后向客戶端發(fā)送一個最終響應(yīng). |HTTP/1.1 可用 |
| 101 | Switching Protocol (切換協(xié)議) | 服務(wù)器已經(jīng)理解了客戶端的請求,,并將通過Upgrade消息頭通知客戶端采用不同的協(xié)議來完成這個請求。在發(fā)送完這個響應(yīng)最后的空行后,,服務(wù)器將會切換到 在Upgrade消息頭中定義的那些協(xié)議,。: 只有在切換新的協(xié)議更有好處的時候才應(yīng)該采取類似措施。例如,,切換到新的HTTP版本比舊版本更有優(yōu)勢,,或者切換到一個實時且同步的協(xié)議以傳送利用此類特 性的資源。 | HTTP/1.1 可用 |
| 102 | Processing (Web DAV) | 此代碼表示服務(wù)器已收到并正在處理該請求,,但沒有響應(yīng)可用,。 |HTTP 1.1可用 |
| 103 | Early Hints (早期提示) | 此狀態(tài)代碼主要用于與Link 鏈接頭一起使用,以允許用戶代理在服務(wù)器仍在準(zhǔn)備響應(yīng)時開始預(yù)加載資源,。 |HTTP 1.1可用 |
| 200 | OK(成功) | 單元格 |HTTP/0.9 可用 |
| 201 | Created(已創(chuàng)建) | 請求成功,,而且有一個新的資源已經(jīng)依據(jù)請求的需要而建立,通常這是 PUT 方法得到的響應(yīng)碼. | HTTP/0.9 可用 |
| 202 | Accepted(已接受) | 服務(wù)器已接受請求,,但尚未處理,。正如它可能被拒絕一樣,最終該請求可能會也可能不會被執(zhí)行,。在異步操作的場合下,,沒有比發(fā)送這個狀態(tài)碼更方便的做法了。:返回202狀態(tài)碼的響應(yīng)的目的是允許服務(wù)器接受其他過程的請求(例如某個每天只執(zhí)行一次的基于批處理的操作),,而不必讓客戶端一直保持與服務(wù)器的連接直到批處理操作全部完成,。在接受請求處理并返回202狀態(tài)碼的響應(yīng)應(yīng)當(dāng)在返回的實體中包含一些指示處理當(dāng)前狀態(tài)的信息,以及指向處理狀態(tài)監(jiān)視器或狀態(tài)預(yù)測的指針,,以便用戶能夠估計操作是否已經(jīng)完成,。 |HTTP/0.9 可用 |
| 203 | Non-Authoritative Information(未授權(quán)信息) | 服務(wù)器已成功處理了請求,但返回的實體頭部元信息不是在原始服務(wù)器上有效的確定集合,而是來自本地或者第三方的拷貝,如果不是上述情況,使用200狀態(tài)碼才是最合適的. | HTTP/0.9 and 1.1 |
| 204 | No Content(無內(nèi)容) | 該響應(yīng)沒有響應(yīng)內(nèi)容,只有響應(yīng)頭,響應(yīng)頭也可能是有用的.用戶代理可以根據(jù)新的響應(yīng)頭來更新對應(yīng)資源的緩存信息. |HTTP/0.9 可用 |
| 205 | Reset Content(重置內(nèi)容) | 告訴用戶代理去重置發(fā)送該請求的窗口的文檔視圖. | HTTP/0.9 and 1.1 |
| 206 | Partial Content(部分內(nèi)容) | 當(dāng)客戶端通過使用range頭字段進(jìn)行文件分段下載時使用該狀態(tài)碼 |HTTP/0.9 and 1.1 |
| 300 | Multiple Choice(多種選擇) | 該請求有多種可能的響應(yīng),用戶代理或者用戶必須選擇它們其中的一個.服務(wù)器沒有任何標(biāo)準(zhǔn)可以遵循去代替用戶來進(jìn)行選擇. | HTTP/1.0 and later |
| 301 | Moved Permanently(永久移動) | 該狀態(tài)碼表示所請求的URI資源路徑已經(jīng)改變,新的URL會在響應(yīng)的Location:頭字段里找到. |HTTP/0.9 可用 |
| 302 | Found(臨時移動) | 該狀態(tài)碼表示所請求的URI資源路徑臨時改變,并且還可能繼續(xù)改變.因此客戶端在以后訪問時還得繼續(xù)使用該URI.新的URL會在響應(yīng)的Location:頭字段里找到. | HTTP/0.9 可用 |
| 303 | See Other(查看其他位置) | 服務(wù)器發(fā)送該響應(yīng)用來引導(dǎo)客戶端使用GET方法訪問另外一個URI. |HTTP/0.9 and 1.1 |
| 304 | Not Modified(未修改) | 告訴客戶端,所請求的內(nèi)容距離上次訪問并沒有變化. 客戶端可以直接從瀏覽器緩存里獲取該資源. | HTTP/0.9 可用 |
| 305 | Use Proxy(使用代理) | 所請求的資源必須統(tǒng)過代理才能訪問到.由于安全原因,該狀態(tài)碼并未受到廣泛支持. |HTTP/0.9 可用 |
| 306 | unused(未使用) | 這個狀態(tài)碼已經(jīng)不再被使用,當(dāng)初它被用在HTTP 1.1規(guī)范的舊版本中. | HTTP/0.9 可用 |
| 307 | Temporary Redirect(臨時重定向) | 服務(wù)器發(fā)送該響應(yīng)用來引導(dǎo)客戶端使用相同的方法訪問另外一個URI來獲取想要獲取的資源.新的URL會在響應(yīng)的Location:頭字段里找到.與302狀態(tài)碼有相同的語義,且前后兩次訪問必須使用相同的方法(GET POST). |HTTP/0.9 可用 |
| 308 | Permanent Redirect(永久重定向) | 所請求的資源將永久的位于另外一個URI上.新的URL會在響應(yīng)的Location:頭字段里找到.與301狀態(tài)碼有相同的語義,且前后兩次訪問必須使用相同的方法(GET POST). | HTTPbis (試驗草案) |
| 400 | Bad Request(錯誤請求) | 因發(fā)送的請求語法錯誤,服務(wù)器無法正常讀取. |HTTP/0.9 可用 |
| 401 | Unauthorized(未授權(quán)) | 需要身份驗證后才能獲取所請求的內(nèi)容,類似于403錯誤.不同點是.401錯誤后,只要正確輸入帳號密碼,驗證即可通過. | HTTP/0.9 可用 |
| 402 | Payment Required(需要付款) | 該狀態(tài)碼被保留以供將來使用.創(chuàng)建此代碼最初的目的是為數(shù)字支付系統(tǒng)而用,然而,到現(xiàn)在也沒投入使用. |HTTP/0.9 and 1.1 |
| 403 | Forbidden(禁止訪問) | 客戶端沒有權(quán)利訪問所請求內(nèi)容,服務(wù)器拒絕本次請求. | HTTP/0.9 可用 |
| 404 | Not Found(未找到) | 服務(wù)器找不到所請求的資源.由于經(jīng)常發(fā)生此種情況,所以該狀態(tài)碼在上網(wǎng)時是非常常見的. |HTTP/0.9 可用 |
| 405 | Method Not Allowed(不允許使用該方法) | 該請求使用的方法被服務(wù)器端禁止使用,RFC2616中規(guī)定, GET 和 HEAD 方法不能被禁止. | HTTP/1.1 可用 |
| 406 | Not Acceptable(無法接受) | 在進(jìn)行服務(wù)器驅(qū)動內(nèi)容協(xié)商后,沒有發(fā)現(xiàn)合適的內(nèi)容傳回給客戶端. |HTTP/1.1 可用 |
| 407 | Proxy Authentication Required(要求代理身份驗證) | 類似于狀態(tài)碼 401,不過需要通過代理才能進(jìn)行驗證. | HTTP/1.1 可用 |
| 408 | Request Timeout(請求超時) | 客戶端沒有在服務(wù)器預(yù)備等待的時間內(nèi)完成一個請求的發(fā)送.這意味著服務(wù)器將會切斷和客戶端的連接. 在其他瀏覽器中,這種響應(yīng)更常見一些, 例如Chrome 和 IE9, 目的是為了使用HTTP 預(yù)連機制加快瀏覽速度. 同時注意,一些服務(wù)器不發(fā)送此種響應(yīng)就直接切斷連接. |HTTP/1.1 可用 |
| 409 | Conflict(沖突) | 該請求與服務(wù)器的當(dāng)前狀態(tài)所沖突. | HTTP/1.1 可用 |
| 410 | Gone(已失效) | 所請求的資源已經(jīng)被刪除. |HTTP/1.1 可用 |
| 411 | Length Required(需要內(nèi)容長度頭) | 因服務(wù)器在本次請求中需要 Content-Length 頭字段,而客戶端沒有發(fā)送.所以,服務(wù)器拒絕了該請求. | HTTP/1.1 可用 |
| 412 | Precondition Failed(預(yù)處理失敗) | 服務(wù)器沒能滿足客戶端在獲取資源時在請求頭字段中設(shè)置的先決條件. |HTTP/1.1 可用 |
| 413 | Request Entity Too Large(請求實體過長) | 請求實體大小超過服務(wù)器的設(shè)置的最大限制,服務(wù)器可能會關(guān)閉HTTP鏈接并返回Retry-After 頭字段. | HTTP/1.1 可用 |
| 414 | Request-URI Too Long(請求網(wǎng)址過長) | 客戶端請求所包含的URI地址太長,以至于服務(wù)器無法處理. |HTTP/1.1 可用 |
| 415 | Unsupported Media Type(媒體類型不支持) | 服務(wù)器不支持客戶端所請求的媒體類型,因此拒絕該請求. | HTTP/1.1 可用 |
| 416 | Requested Range Not Satisfiable(請求范圍不合要求) | 請求中包含的Range頭字段無法被滿足,通常是因為Range中的數(shù)字范圍超出所請求資源的大小. |HTTP/1.1 可用 |
| 417 | Expectation Failed(預(yù)期結(jié)果失敗) | 在請求頭 Expect 中指定的預(yù)期內(nèi)容無法被服務(wù)器滿足. | HTTP/1.1 可用 |
| 500 | Internal Server Error(內(nèi)部服務(wù)器錯誤) | 服務(wù)器遇到未知的無法解決的問題. |HTTP/0.9 可用 |
| 501 | Implemented(未實現(xiàn)) | 服務(wù)器不支持該請求中使用的方法,比如POST 和 PUT.只有GET 和 HEAD 是RFC2616規(guī)范中規(guī)定服務(wù)器必須實現(xiàn)的方法. | HTTP/0.9 可用 |
| 502 | Bad Gateway(網(wǎng)關(guān)錯誤) | 服務(wù)器作為網(wǎng)關(guān)且從上游服務(wù)器獲取到了一個無效的HTTP響應(yīng). |HTTP/0.9 可用 |
| 503 | Service Unavailable(服務(wù)不可用) | 由于臨時的服務(wù)器維護(hù)或者過載,服務(wù)器當(dāng)前無法處理請求.這個狀況是臨時的,并且將在一段時間以后恢復(fù).如果能夠預(yù)計延遲時間,那么響應(yīng)中可以包含一個Retry-After:頭用以標(biāo)明這個延遲時間.如果沒有給出這個Retry-After:信息,,那么客戶端應(yīng)當(dāng)以處理500響應(yīng)的方式處理它.同時,這種情況下,一個友好的用于解釋服務(wù)器出現(xiàn)問題的頁面應(yīng)當(dāng)被返回,并且,緩存相關(guān)的HTTP頭信息也應(yīng)該包含,因為通常這種錯誤提示網(wǎng)頁不應(yīng)當(dāng)被客戶端緩存. | HTTP/0.9 可用 |
| 504 | Gateway Timeout (網(wǎng)關(guān)超時) | 服務(wù)器作為網(wǎng)關(guān)且不能從上游服務(wù)器及時的得到響應(yīng)返回給客戶端. |HTTP/1.1 可用 |
| 505 | HTTP Version Not Supported(HTTP版本不受支持) | 服務(wù)器不支持客戶端發(fā)送的HTTP請求中所使用的HTTP協(xié)議版本. | HTTP/1.1 可用 |
# 瀏覽器兼容性
![](/upload/attach/202101/202011271219_ZKJ5B2SQ4GBKV9M.png)
# 參考資料
* 《HTTP教程》
* 《HTTP響應(yīng)碼》
* 《HTTP 響應(yīng)代碼》