常見的狀態(tài)碼及含義

1xx(臨時(shí)響應(yīng))

表示臨時(shí)響應(yīng)并需要請(qǐng)求者繼續(xù)執(zhí)行操作的狀態(tài)代碼逗扒。

代碼 說明
100 (繼續(xù)) 請(qǐng)求者應(yīng)當(dāng)繼續(xù)提出請(qǐng)求宛裕。 服務(wù)器返回此代碼表示已收到請(qǐng)求的第一部分腰懂,正在等待其余部分刁俭。
101 (切換協(xié)議) 請(qǐng)求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認(rèn)并準(zhǔn)備切換散劫。

2xx (成功)

表示成功處理了請(qǐng)求的狀態(tài)代碼稚机。

代碼 說明
200 (成功) 服務(wù)器已成功處理了請(qǐng)求。 通常获搏,這表示服務(wù)器提供了請(qǐng)求的網(wǎng)頁赖条。
201 (已創(chuàng)建) 請(qǐng)求成功并且服務(wù)器創(chuàng)建了新的資源。
202 (已接受) 服務(wù)器已接受請(qǐng)求常熙,但尚未處理纬乍。
203 (非授權(quán)信息) 服務(wù)器已成功處理了請(qǐng)求,但返回的信息可能來自另一來源症概。
204 (無內(nèi)容) 服務(wù)器成功處理了請(qǐng)求蕾额,但沒有返回任何內(nèi)容。
205 (重置內(nèi)容) 服務(wù)器成功處理了請(qǐng)求彼城,但沒有返回任何內(nèi)容。
206 (部分內(nèi)容) 服務(wù)器成功處理了部分 GET 請(qǐng)求

3xx (重定向)

表示要完成請(qǐng)求,需要進(jìn)一步操作募壕。 通常调炬,這些狀態(tài)代碼用來重定向。

代碼 說明
300 (多種選擇) 針對(duì)請(qǐng)求舱馅,服務(wù)器可執(zhí)行多種操作缰泡。 服務(wù)器可根據(jù)請(qǐng)求者 (user agent) 選擇一項(xiàng)操作,或提供操作列表供請(qǐng)求者選擇代嗤。
301 (永久移動(dòng)) 請(qǐng)求的網(wǎng)頁已永久移動(dòng)到新位置棘钞。 服務(wù)器返回此響應(yīng)(對(duì) GET 或 HEAD 請(qǐng)求的響應(yīng))時(shí),會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到新位置干毅。
302 (臨時(shí)移動(dòng)) 服務(wù)器目前從不同位置的網(wǎng)頁響應(yīng)請(qǐng)求宜猜,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來進(jìn)行以后的請(qǐng)求。
303 (查看其他位置) 請(qǐng)求者應(yīng)當(dāng)對(duì)不同的位置使用單獨(dú)的 GET 請(qǐng)求來檢索響應(yīng)時(shí)硝逢,服務(wù)器返回此代碼姨拥。
304 (未修改) 自從上次請(qǐng)求后,請(qǐng)求的網(wǎng)頁未修改過渠鸽。 服務(wù)器返回此響應(yīng)時(shí)叫乌,不會(huì)返回網(wǎng)頁內(nèi)容。
305 (使用代理) 請(qǐng)求者只能使用代理訪問請(qǐng)求的網(wǎng)頁徽缚。 如果服務(wù)器返回此響應(yīng)憨奸,還表示請(qǐng)求者應(yīng)使用代理。
307 (臨時(shí)重定向) 服務(wù)器目前從不同位置的網(wǎng)頁響應(yīng)請(qǐng)求凿试,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來進(jìn)行以后的請(qǐng)求

4xx(請(qǐng)求錯(cuò)誤)

這些狀態(tài)代碼表示請(qǐng)求可能出錯(cuò)排宰,妨礙了服務(wù)器的處理。

代碼 說明
400 (錯(cuò)誤請(qǐng)求) 服務(wù)器不理解請(qǐng)求的語法红省。
401 (未授權(quán)) 請(qǐng)求要求身份驗(yàn)證额各。 對(duì)于需要登錄的網(wǎng)頁,服務(wù)器可能返回此響應(yīng)吧恃。
403 (禁止) 服務(wù)器拒絕請(qǐng)求虾啦。
404 (未找到) 服務(wù)器找不到請(qǐng)求的網(wǎng)頁。
405 (方法禁用) 禁用請(qǐng)求中指定的方法痕寓。
406 (不接受) 無法使用請(qǐng)求的內(nèi)容特性響應(yīng)請(qǐng)求的網(wǎng)頁傲醉。
407 (需要代理授權(quán)) 此狀態(tài)代碼與 401(未授權(quán))類似,但指定請(qǐng)求者應(yīng)當(dāng)授權(quán)使用代理呻率。
408 (請(qǐng)求超時(shí)) 服務(wù)器等候請(qǐng)求時(shí)發(fā)生超時(shí)硬毕。
409 (沖突) 服務(wù)器在完成請(qǐng)求時(shí)發(fā)生沖突。 服務(wù)器必須在響應(yīng)中包含有關(guān)沖突的信息礼仗。
410 (已刪除) 如果請(qǐng)求的資源已永久刪除吐咳,服務(wù)器就會(huì)返回此響應(yīng)逻悠。
411 (需要有效長度) 服務(wù)器不接受不含有效內(nèi)容長度標(biāo)頭字段的請(qǐng)求。
412 (未滿足前提條件) 服務(wù)器未滿足請(qǐng)求者在請(qǐng)求中設(shè)置的其中一個(gè)前提條件韭脊。
413 (請(qǐng)求實(shí)體過大) 服務(wù)器無法處理請(qǐng)求童谒,因?yàn)檎?qǐng)求實(shí)體過大,超出服務(wù)器的處理能力沪羔。
414 (請(qǐng)求的 URI 過長) 請(qǐng)求的 URI(通常為網(wǎng)址)過長饥伊,服務(wù)器無法處理。
415 (不支持的媒體類型) 請(qǐng)求的格式不受請(qǐng)求頁面的支持蔫饰。
416 (請(qǐng)求范圍不符合要求) 如果頁面無法提供請(qǐng)求的范圍琅豆,則服務(wù)器會(huì)返回此狀態(tài)代碼。
417 (未滿足期望值) 服務(wù)器未滿足”期望”請(qǐng)求標(biāo)頭字段的要求

5xx(服務(wù)器錯(cuò)誤)

這些狀態(tài)代碼表示服務(wù)器在嘗試處理請(qǐng)求時(shí)發(fā)生內(nèi)部錯(cuò)誤篓吁。 這些錯(cuò)誤可能是服務(wù)器本身的錯(cuò)誤茫因,而不是請(qǐng)求出錯(cuò)。

代碼 說明
500 (服務(wù)器內(nèi)部錯(cuò)誤) 服務(wù)器遇到錯(cuò)誤越除,無法完成請(qǐng)求节腐。
501 (尚未實(shí)施) 服務(wù)器不具備完成請(qǐng)求的功能。 例如摘盆,服務(wù)器無法識(shí)別請(qǐng)求方法時(shí)可能會(huì)返回此代碼翼雀。
502 (錯(cuò)誤網(wǎng)關(guān)) 服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到無效響應(yīng)孩擂。
503 (服務(wù)不可用) 服務(wù)器目前無法使用(由于超載或停機(jī)維護(hù))狼渊。 通常,這只是暫時(shí)狀態(tài)类垦。
504 (網(wǎng)關(guān)超時(shí)) 服務(wù)器作為網(wǎng)關(guān)或代理狈邑,但是沒有及時(shí)從上游服務(wù)器收到請(qǐng)求。
505 (HTTP 版本不受支持) 服務(wù)器不支持請(qǐng)求中所用的 HTTP 協(xié)議版本

RFC 6585 最近剛剛發(fā)布蚤认,該文檔描述了 4 個(gè)新的 HTTP 狀態(tài)碼米苹。

HTTP 協(xié)議還在變化?是的砰琢,HTTP 協(xié)議一直在演變蘸嘶,新的狀態(tài)碼對(duì)于開發(fā) REST 服務(wù)或者說是基于 HTTP 的服務(wù)非常有用,下面我們?yōu)槟阍敿?xì)介紹這四個(gè)新的狀態(tài)碼以及是否應(yīng)該使用陪汽。

428 Precondition Required (要求先決條件)

先決條件是客戶端發(fā)送 HTTP 請(qǐng)求時(shí)训唱,如果想要請(qǐng)求能成功必須滿足一些預(yù)設(shè)的條件。
一個(gè)好的例子就是 If-None-Match 頭挚冤,經(jīng)常在 GET 請(qǐng)求中使用况增,如果指定了 If-None-Match ,那么客戶端只在響應(yīng)中的 ETag 改變后才會(huì)重新接收回應(yīng)训挡。
先決條件的另外一個(gè)例子就是 If-Match 頭澳骤,這個(gè)一般用在 PUT 請(qǐng)求上用于指示只更新沒被改變的資源歧强,這在多個(gè)客戶端使用 HTTP 服務(wù)時(shí)用來防止彼此間不會(huì)覆蓋相同內(nèi)容。

當(dāng)服務(wù)器端使用 428 Precondition Required 狀態(tài)碼時(shí)宴凉,表示客戶端必須發(fā)送上述的請(qǐng)求頭才能執(zhí)行請(qǐng)求誊锭,這個(gè)方法為服務(wù)器提供一種有效的方法來阻止 ‘lost update’ 問題表悬。

429 Too Many Requests (太多請(qǐng)求)

當(dāng)你需要限制客戶端請(qǐng)求某個(gè)服務(wù)數(shù)量時(shí)弥锄,該狀態(tài)碼就很有用,也就是請(qǐng)求速度限制蟆沫。

在此之前籽暇,有一些類似的狀態(tài)碼,例如 ‘509 Bandwidth Limit Exceeded’. Twitter 使用 420 (這不是HTTP定義的狀態(tài)碼)

如果你希望限制客戶端對(duì)服務(wù)的請(qǐng)求數(shù)饭庞,可使用 429 狀態(tài)碼戒悠,同時(shí)包含一個(gè) Retry-After 響應(yīng)頭用于告訴客戶端多長時(shí)間后可以再次請(qǐng)求服務(wù)。

431 Request Header Fields Too Large (請(qǐng)求頭字段太大)

某些情況下舟山,客戶端發(fā)送 HTTP 請(qǐng)求頭會(huì)變得很大绸狐,那么服務(wù)器可發(fā)送 431 Request Header Fields Too Large 來指明該問題。

我不太清楚為什么沒有 430 狀態(tài)碼累盗,而是直接從 429 跳到 431寒矿,我嘗試搜索但沒有結(jié)果。唯一的猜測是 430 Forbidden 跟 403 Forbidden 太像了若债,為了避免混淆才這么做的符相,天知道!

511 Network Authentication Required (要求網(wǎng)絡(luò)認(rèn)證)

對(duì)我來說這個(gè)狀態(tài)碼很有趣蠢琳,如果你在開發(fā)一個(gè) HTTP 服務(wù)器啊终,你不一定需要處理該狀態(tài)碼,但如果你在編寫 HTTP 客戶端傲须,那這個(gè)狀態(tài)碼就非常重要蓝牲。

如果你頻繁使用筆記本和智能手機(jī),你可能會(huì)注意到大量的公用 WIFI 服務(wù)要求你必須接受一些協(xié)議或者必須登錄后才能使用泰讽。

這是通過攔截HTTP流量例衍,當(dāng)用戶試圖訪問網(wǎng)絡(luò)返回一個(gè)重定向和登錄,這很討厭菇绵,但是實(shí)際情況就是這樣的肄渗。

使用這些“攔截”客戶端,會(huì)有一些討厭的副作用咬最。在 RFC 中有提到這兩個(gè)的例子:

如果你在登錄WIFI前訪問某個(gè)網(wǎng)站翎嫡,網(wǎng)絡(luò)設(shè)備將會(huì)攔截首個(gè)請(qǐng)求,這些設(shè)備往往也有自己的網(wǎng)站圖標(biāo) ‘favicon.ico’永乌。登錄后您會(huì)發(fā)現(xiàn)惑申,有一段時(shí)間內(nèi)你訪問的網(wǎng)站圖標(biāo)一直是WIFI登錄網(wǎng)站的圖標(biāo)具伍。
如果客戶端使用HTTP請(qǐng)求來查找文檔(可能是JSON),網(wǎng)絡(luò)將會(huì)響應(yīng)一個(gè)登錄頁圈驼,這樣你的客戶端就會(huì)解析錯(cuò)誤并導(dǎo)致客戶端運(yùn)行異常人芽,在現(xiàn)實(shí)中這種問題非常常見。
因此 511 狀態(tài)碼的提出就是為了解決這個(gè)問題绩脆。

如果你正在編寫 HTTP 的客戶端萤厅,你最好還是檢查 511 狀態(tài)碼以確認(rèn)是否需要認(rèn)證后才能訪問。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末靴迫,一起剝皮案震驚了整個(gè)濱河市惕味,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌玉锌,老刑警劉巖名挥,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異主守,居然都是意外死亡禀倔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門参淫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來救湖,“玉大人,你說我怎么就攤上這事黄刚∩咏鳎” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵憔维,是天一觀的道長涛救。 經(jīng)常有香客問我,道長业扒,這世上最難降的妖魔是什么检吆? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮程储,結(jié)果婚禮上蹭沛,老公的妹妹穿的比我還像新娘。我一直安慰自己章鲤,他們只是感情好摊灭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著败徊,像睡著了一般帚呼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天煤杀,我揣著相機(jī)與錄音眷蜈,去河邊找鬼。 笑死沈自,一個(gè)胖子當(dāng)著我的面吹牛酌儒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播枯途,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼忌怎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了柔袁?” 一聲冷哼從身側(cè)響起呆躲,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捶索,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灰瞻,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腥例,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酝润。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片燎竖。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖要销,靈堂內(nèi)的尸體忽然破棺而出构回,到底是詐尸還是另有隱情,我是刑警寧澤疏咐,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布纤掸,位于F島的核電站,受9級(jí)特大地震影響浑塞,放射性物質(zhì)發(fā)生泄漏借跪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一酌壕、第九天 我趴在偏房一處隱蔽的房頂上張望掏愁。 院中可真熱鬧,春花似錦卵牍、人聲如沸果港。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辛掠。三九已至,卻和暖如春溅蛉,著一層夾襖步出監(jiān)牢的瞬間公浪,已是汗流浹背他宛。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留欠气,地道東北人厅各。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像预柒,于是被迫代替她去往敵國和親队塘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容