HTTP協(xié)議狀態(tài)碼詳解(HTTP Status Code)

HTTP協(xié)議狀態(tài)碼詳解(HTTP Status Code)

一些常見的狀態(tài)碼:

200 – 服務(wù)器成功返回網(wǎng)頁?

404 – 請(qǐng)求的網(wǎng)頁不存在?

503 – 服務(wù)不可用?

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 ? (需要有效長(zhǎng)度) 服務(wù)器不接受不含有效內(nèi)容長(zhǎng)度標(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 過長(zhǎng)) 請(qǐng)求的 URI(通常為網(wǎng)址)過長(zhǎ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)頭用于告訴客戶端多長(zhǎ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é)果迈套。唯一的猜測(cè)是 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è)的例子:

[if !supportLists]·?[endif]如果你在登錄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)奕锌。

[if !supportLists]·?[endif]如果客戶端使用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閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異屹逛,居然都是意外死亡础废,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門罕模,熙熙樓的掌柜王于貴愁眉苦臉地迎上來评腺,“玉大人,你說我怎么就攤上這事淑掌≥锛ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)芋绸。 經(jīng)常有香客問我媒殉,道長(zhǎng),這世上最難降的妖魔是什么摔敛? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任廷蓉,我火速辦了婚禮,結(jié)果婚禮上马昙,老公的妹妹穿的比我還像新娘桃犬。我一直安慰自己,他們只是感情好行楞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布攒暇。 她就那樣靜靜地躺著,像睡著了一般敢伸。 火紅的嫁衣襯著肌膚如雪扯饶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天池颈,我揣著相機(jī)與錄音尾序,去河邊找鬼。 笑死躯砰,一個(gè)胖子當(dāng)著我的面吹牛每币,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琢歇,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼兰怠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了李茫?” 一聲冷哼從身側(cè)響起揭保,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎魄宏,沒想到半個(gè)月后秸侣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宠互,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年味榛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片予跌。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搏色,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出券册,到底是詐尸還是另有隱情频轿,我是刑警寧澤垂涯,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站航邢,受9級(jí)特大地震影響集币,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜翠忠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乞榨。 院中可真熱鬧秽之,春花似錦、人聲如沸吃既。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹦倚。三九已至河质,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間震叙,已是汗流浹背掀鹅。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留媒楼,地道東北人乐尊。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像划址,于是被迫代替她去往敵國和親扔嵌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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