http狀態(tài)碼/http返回碼詳解

HTTP狀態(tài)碼(HTTP Status Code)表示http服務(wù)器對與請求HTTP響應(yīng)狀態(tài)的3位數(shù)字代碼捏膨。它由 RFC 2616 規(guī)范定義的莱坎,并得到RFC 2518湾盒、RFC 2817、RFC 2295笆豁、RFC 2774略水、RFC 4918等規(guī)范擴(kuò)展价卤。   
所有狀態(tài)碼的第一個(gè)數(shù)字代表了響應(yīng)的五種狀態(tài)之一:
1xx:請求收到,繼續(xù)處理
2xx:操作成功收到渊涝,分析慎璧、接受
3xx:完成此請求必須進(jìn)一步處理
4xx:請求包含一個(gè)錯(cuò)誤語法或不能完成
5xx:服務(wù)器執(zhí)行一個(gè)完全有效請求失

1xx  請求已被接受,需要繼續(xù)處理跨释。這類響應(yīng)是臨時(shí)響應(yīng)炸卑,只包含狀態(tài)行和某些可選的響應(yīng)頭信息,并以空行結(jié)束煤傍。由于 HTTP/1.0 協(xié)議中沒有定義任何 1xx 狀態(tài)碼,所以除非在某些試驗(yàn)條件下嘱蛋,服務(wù)器禁止向此類客戶端發(fā)送 1xx 響應(yīng)蚯姆。
100(Continue/繼續(xù))  客戶端應(yīng)當(dāng)繼續(xù)發(fā)送請求。這個(gè)臨時(shí)響應(yīng)是用來通知客戶端它的部分請求已經(jīng)被服務(wù)器接收洒敏,且仍未被拒絕龄恋。客戶端應(yīng)當(dāng)繼續(xù)發(fā)送請求的剩余部分凶伙,或者如果請求已經(jīng)完成郭毕,忽略這個(gè)響應(yīng)。服務(wù)器必須在請求完成后向客戶端發(fā)送一個(gè)最終響應(yīng)函荣。
101(Switching Protocols/轉(zhuǎn)換協(xié)議)  服務(wù)器已經(jīng)理解了客戶端的請求显押,并將通過Upgrade 消息頭通知客戶端采用不同的協(xié)議來完成這個(gè)請求。在發(fā)送完這個(gè)響應(yīng)最后的空行后傻挂,服務(wù)器將會切換到在Upgrade 消息頭中定義的那些協(xié)議乘碑。只有在切換新的協(xié)議更有好處的時(shí)候才應(yīng)該采取類似措施。例如金拒,切換到新的HTTP 版本比舊版本更有優(yōu)勢兽肤,或者切換到一個(gè)實(shí)時(shí)且同步的協(xié)議以傳送利用此類特性的資源。
102(Processing)  代表處理將被繼續(xù)執(zhí)行绪抛,由WebDAV(RFC 2518)擴(kuò)展的狀態(tài)碼资铡。
2xx 成功,請求已成功被服務(wù)器接收幢码、理解笤休、并接受。
200(OK/成功)  請求已成功蛤育,請求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回宛官。
201 (Created/已創(chuàng)建)  請求已經(jīng)被實(shí)現(xiàn)葫松,而且有一個(gè)新的資源已經(jīng)依據(jù)請求的需要而建立,且其 URI 已經(jīng)隨Location 頭信息返回底洗。假如需要的資源無法及時(shí)建立的話腋么,應(yīng)當(dāng)返回 ‘202 Accepted’。
202 (Accepted/接受)  服務(wù)器已接受請求亥揖,但尚未處理珊擂。最終該請求可能會也可能不會被執(zhí)行。在異步操作的場合下费变,沒有比發(fā)送這個(gè)狀態(tài)碼更方便的做法了摧扇。返回202狀態(tài)碼的響應(yīng)的目的是允許服務(wù)器接受其他過程的請求(例如某個(gè)每天只執(zhí)行一次的基于批處理的操作),而不必讓客戶端一直保持與服務(wù)器的連接直到批處理操作全部完成挚歧。在接受請求處理并返回202狀態(tài)碼的響應(yīng)應(yīng)當(dāng)在返回的實(shí)體中包含一些指示處理當(dāng)前狀態(tài)的信息扛稽,以及指向處理狀態(tài)監(jiān)視器或狀態(tài)預(yù)測的指針,以便用戶能夠估計(jì)操作是否已經(jīng)完成滑负。
203(Non-Authoritative Information/非官方信息)  服務(wù)器已成功處理了請求在张,但返回的實(shí)體頭部元信息不是在原始服務(wù)器上有效的確定集合,而是來自本地或者第三方的拷貝矮慕。當(dāng)前的信息可能是原始版本的子集或者超集帮匾。例如,包含資源的元數(shù)據(jù)可能導(dǎo)致原始服務(wù)器知道元信息的超級痴鳄。使用此狀態(tài)碼不是必須的瘟斜,而且只有在響應(yīng)不使用此狀態(tài)碼便會返回200 OK的情況下才是合適的。
204 (No Content/無內(nèi)容)  服務(wù)器成功處理了請求痪寻,但不需要返回任何實(shí)體內(nèi)容螺句,并且希望返回更新了的元信息。響應(yīng)可能通過實(shí)體頭部的形式槽华,返回新的或更新后的元信息壹蔓。如果存在這些頭部信息,則應(yīng)當(dāng)與所請求的變量相呼應(yīng)猫态。
  如果客戶端是瀏覽器的話佣蓉,那么用戶瀏覽器應(yīng)保留發(fā)送了該請求的頁面,而不產(chǎn)生任何文檔視圖上的變化亲雪,即使按照規(guī)范新的或更新后的元信息應(yīng)當(dāng)被應(yīng)用到用戶瀏覽器活動視圖中的文檔勇凭。
  由于204響應(yīng)被禁止包含任何消息體,因此它始終以消息頭后的第一個(gè)空行結(jié)尾义辕。
205(Reset Content/重置內(nèi)容)  服務(wù)器成功處理了請求虾标,且沒有返回任何內(nèi)容。但是與204響應(yīng)不同灌砖,返回此狀態(tài)碼的響應(yīng)要求請求者重置文檔視圖璧函。該響應(yīng)主要是被用于接受用戶輸入后傀蚌,立即重置表單,以便用戶能夠輕松地開始另一次輸入蘸吓。
  與204響應(yīng)一樣善炫,該響應(yīng)也被禁止包含任何消息體,且以消息頭后的第一個(gè)空行結(jié)束库继。
206(Partial Content/局部內(nèi)容)  服務(wù)器已經(jīng)成功處理了部分 GET 請求箩艺。類似于 FlashGet 或者迅雷這類的 HTTP 下載工具都是使用此類響應(yīng)實(shí)現(xiàn)斷點(diǎn)續(xù)傳或者將一個(gè)大文檔分解為多個(gè)下載段同時(shí)下載。
  該請求必須包含 Range 頭信息來指示客戶端希望得到的內(nèi)容范圍宪萄,并且可能包含 If-Range 來作為請求條件艺谆。
響應(yīng)必須包含如下的頭部域:
Content-Range 用以指示本次響應(yīng)中返回的內(nèi)容的范圍;如果是 Content-Type 為 multipart/byteranges 的多段下載拜英,則每一 multipart 段中都應(yīng)包含 Content-Range 域用以指示本段的內(nèi)容范圍静汤。假如響應(yīng)中包含 Content-Length,那么它的數(shù)值必須匹配它返回的內(nèi)容范圍的真實(shí)字節(jié)數(shù)居凶。
Date
ETag 和/或 Content-Location撒妈,假如同樣的請求本應(yīng)該返回200響應(yīng)。
Expires, Cache-Control排监,和/或 Vary,假如其值可能與之前相同變量的其他響應(yīng)對應(yīng)的值不同的話杰捂。

假如本響應(yīng)請求使用了 If-Range 強(qiáng)緩存驗(yàn)證舆床,那么本次響應(yīng)不應(yīng)該包含其他實(shí)體頭;假如本響應(yīng)的請求使用了 If-Range 弱緩存驗(yàn)證嫁佳,那么本次響應(yīng)禁止包含其他實(shí)體頭挨队;這避免了緩存的實(shí)體內(nèi)容和更新了的實(shí)體頭信息之間的不一致。否則蒿往,本響應(yīng)就應(yīng)當(dāng)包含所有本應(yīng)該返回200響應(yīng)中應(yīng)當(dāng)返回的所有實(shí)體頭部域盛垦。
  假如 ETag 或 Last-Modified 頭部不能精確匹配的話,則客戶端緩存應(yīng)禁止將206響應(yīng)返回的內(nèi)容與之前任何緩存過的內(nèi)容組合在一起瓤漏。
  任何不支持 Range 以及 Content-Range 頭的緩存都禁止緩存206響應(yīng)返回的內(nèi)容腾夯。
207(Multi-Status)  由WebDAV(RFC 2518)擴(kuò)展的狀態(tài)碼,代表之后的消息體將是一個(gè)XML消息蔬充,并且可能依照之前子請求數(shù)量的不同蝶俱,包含一系列獨(dú)立的響應(yīng)代碼。3xx 重定向  完成此請求必須進(jìn)一步處理饥漫,這類狀態(tài)碼代表需要客戶端采取進(jìn)一步的操作才能完成請求榨呆。通常,這些狀態(tài)碼用來重定向庸队,后續(xù)的請求地址(重定向目標(biāo))在本次響應(yīng)的 Location 域中指明积蜻。
  當(dāng)且僅當(dāng)后續(xù)的請求所使用的方法是 GET 或者 HEAD 時(shí)闯割,用戶瀏覽器才可以在沒有用戶介入的情況下自動提交所需要的后續(xù)請求「筒穑客戶端應(yīng)當(dāng)自動監(jiān)測無限循環(huán)重定向(例如:A->A宙拉,或者A->B->C->A),因?yàn)檫@會導(dǎo)致服務(wù)器和客戶端大量不必要的資源消耗如输。按照 HTTP/1.0 版規(guī)范的建議鼓黔,瀏覽器不應(yīng)自動訪問超過5次的重定向。
300(Multiple Choices/多重選擇)  被請求的資源有一系列可供選擇的回饋信息不见,每個(gè)都有自己特定的地址和瀏覽器驅(qū)動的商議信息澳化。用戶或?yàn)g覽器能夠自行選擇一個(gè)首選的地址進(jìn)行重定向。
  除非這是一個(gè) HEAD 請求稳吮,否則該響應(yīng)應(yīng)當(dāng)包括一個(gè)資源特性及地址的列表的實(shí)體缎谷,以便用戶或?yàn)g覽器從中選擇最合適的重定向地址。這個(gè)實(shí)體的格式由 Content-Type 定義的格式所決定灶似。瀏覽器可能根據(jù)響應(yīng)的格式以及瀏覽器自身能力列林,自動作出最合適的選擇。當(dāng)然酪惭,RFC 2616規(guī)范并沒有規(guī)定這樣的自動選擇該如何進(jìn)行希痴。
  如果服務(wù)器本身已經(jīng)有了首選的回饋選擇,那么在 Location 中應(yīng)當(dāng)指明這個(gè)回饋的 URI春感;瀏覽器可能會將這個(gè) Location 值作為自動重定向的地址砌创。此外,除非額外指定鲫懒,否則這個(gè)響應(yīng)也是可緩存的嫩实。
301(Moved Permanently)  被請求的資源已永久移動到新位置,并且將來任何對此資源的引用都應(yīng)該使用本響應(yīng)返回的若干個(gè) URI 之一窥岩。如果可能甲献,擁有鏈接編輯功能的客戶端應(yīng)當(dāng)自動把請求的地址修改為從服務(wù)器反饋回來的地址。除非額外指定颂翼,否則這個(gè)響應(yīng)也是可緩存的晃洒。
  新的永久性的 URI 應(yīng)當(dāng)在響應(yīng)的 Location 域中返回。除非這是一個(gè) HEAD 請求朦乏,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的 URI 的超鏈接及簡短說明锥累。
  如果這不是一個(gè) GET 或者 HEAD 請求,因此瀏覽器禁止自動進(jìn)行重定向集歇,除非得到用戶的確認(rèn)桶略,因?yàn)檎埱蟮臈l件可能因此發(fā)生變化。
  注意:對于某些使用 HTTP/1.0 協(xié)議的瀏覽器,當(dāng)它們發(fā)送的 POST 請求得到了一個(gè)301響應(yīng)的話际歼,接下來的重定向請求將會變成 GET 方式惶翻。
302(Found)  請求的資源現(xiàn)在臨時(shí)從不同的 URI 響應(yīng)請求。由于這樣的重定向是臨時(shí)的鹅心,客戶端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請求吕粗。只有在Cache-Control或Expires中進(jìn)行了指定的情況下,這個(gè)響應(yīng)才是可緩存的旭愧。
  新的臨時(shí)性的 URI 應(yīng)當(dāng)在響應(yīng)的 Location 域中返回颅筋。除非這是一個(gè) HEAD 請求,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的 URI 的超鏈接及簡短說明输枯。
   如果這不是一個(gè) GET 或者 HEAD 請求议泵,那么瀏覽器禁止自動進(jìn)行重定向,除非得到用戶的確認(rèn)桃熄,因?yàn)檎埱蟮臈l件可能因此發(fā)生變化先口。
  注意:雖然RFC 1945和RFC 2068規(guī)范不允許客戶端在重定向時(shí)改變請求的方法,但是很多現(xiàn)存的瀏覽器將302響應(yīng)視作為303響應(yīng)瞳收,并且使用 GET 方式訪問在 Location 中規(guī)定的 URI碉京,而無視原先請求的方法。狀態(tài)碼303和307被添加了進(jìn)來螟深,用以明確服務(wù)器期待客戶端進(jìn)行何種反應(yīng)谐宙。
303 (See Other/參見其他信息)  對應(yīng)當(dāng)前請求的響應(yīng)可以在另一個(gè) URI 上被找到,而且客戶端應(yīng)當(dāng)采用 GET 的方式訪問那個(gè)資源界弧。這個(gè)方法的存在主要是為了允許由腳本激活的POST請求輸出重定向到一個(gè)新的資源卧惜。這個(gè)新的 URI 不是原始資源的替代引用。同時(shí)夹纫,303響應(yīng)禁止被緩存。當(dāng)然设凹,第二個(gè)請求(重定向)可能被緩存舰讹。
  新的 URI 應(yīng)當(dāng)在響應(yīng)的 Location 域中返回。除非這是一個(gè) HEAD 請求闪朱,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的 URI 的超鏈接及簡短說明月匣。
  注意:許多 HTTP/1.1 版以前的 瀏覽器不能正確理解303狀態(tài)。如果需要考慮與這些瀏覽器之間的互動奋姿,302狀態(tài)碼應(yīng)該可以勝任锄开,因?yàn)榇蠖鄶?shù)的瀏覽器處理302響應(yīng)時(shí)的方式恰恰就是上述規(guī)范要求客戶端處理303響應(yīng)時(shí)應(yīng)當(dāng)做的。
304(Not Modified)  如果客戶端發(fā)送了一個(gè)帶條件的 GET 請求且該請求已被允許称诗,而文檔的內(nèi)容(自上次訪問以來或者根據(jù)請求的條件)并沒有改變萍悴,則服務(wù)器應(yīng)當(dāng)返回這個(gè)狀態(tài)碼。304響應(yīng)禁止包含消息體,因此始終以消息頭后的第一個(gè)空行結(jié)尾癣诱。
該響應(yīng)必須包含以下的頭信息:
Date计维,除非這個(gè)服務(wù)器沒有時(shí)鐘。假如沒有時(shí)鐘的服務(wù)器也遵守這些規(guī)則撕予,那么代理服務(wù)器以及客戶端可以自行將 Date 字段添加到接收到的響應(yīng)頭中去(正如RFC 2068中規(guī)定的一樣)鲫惶,緩存機(jī)制將會正常工作。
ETag 和/或 Content-Location实抡,假如同樣的請求本應(yīng)返回200響應(yīng)欠母。
Expires, Cache-Control,和/或Vary吆寨,假如其值可能與之前相同變量的其他響應(yīng)對應(yīng)的值不同的話赏淌。

    假如本響應(yīng)請求使用了強(qiáng)緩存驗(yàn)證,那么本次響應(yīng)不應(yīng)該包含其他實(shí)體頭鸟废;否則(例如猜敢,某個(gè)帶條件的 GET 請求使用了弱緩存驗(yàn)證),本次響應(yīng)禁止包含其他實(shí)體頭盒延;這避免了緩存了的實(shí)體內(nèi)容和更新了的實(shí)體頭信息之間的不一致缩擂。

假如某個(gè)304響應(yīng)指明了當(dāng)前某個(gè)實(shí)體沒有緩存,那么緩存系統(tǒng)必須忽視這個(gè)響應(yīng)添寺,并且重復(fù)發(fā)送不包含限制條件的請求胯盯。
  假如接收到一個(gè)要求更新某個(gè)緩存條目的304響應(yīng),那么緩存系統(tǒng)必須更新整個(gè)條目以反映所有在響應(yīng)中被更新的字段的值计露。
305(Use Proxy/使用代理)  被請求的資源必須通過指定的代理才能被訪問博脑。Location 域中將給出指定的代理所在的 URI 信息,接收者需要重復(fù)發(fā)送一個(gè)單獨(dú)的請求票罐,通過這個(gè)代理才能訪問相應(yīng)資源叉趣。只有原始服務(wù)器才能建立305響應(yīng)。   注意:RFC 2068中沒有明確305響應(yīng)是為了重定向一個(gè)單獨(dú)的請求该押,而且只能被原始服務(wù)器建立疗杉。忽視這些限制可能導(dǎo)致嚴(yán)重的安全后果。
306(Switch Proxy)  在最新版的規(guī)范中蚕礼,306狀態(tài)碼已經(jīng)不再被使用烟具。
307(Temporary Redirect/臨時(shí)重定向)  請求的資源現(xiàn)在臨時(shí)從不同的URI 響應(yīng)請求。由于這樣的重定向是臨時(shí)的奠蹬,客戶端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請求朝聋。只有在Cache-Control或Expires中進(jìn)行了指定的情況下,這個(gè)響應(yīng)才是可緩存的囤躁。
  新的臨時(shí)性的URI 應(yīng)當(dāng)在響應(yīng)的 Location 域中返回冀痕。除非這是一個(gè)HEAD 請求荔睹,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的URI 的超鏈接及簡短說明。因?yàn)椴糠譃g覽器不能識別307響應(yīng)金度,因此需要添加上述必要信息以便用戶能夠理解并向新的 URI 發(fā)出訪問請求应媚。   如果這不是一個(gè)GET 或者 HEAD 請求,那么瀏覽器禁止自動進(jìn)行重定向猜极,除非得到用戶的確認(rèn)中姜,因?yàn)檎埱蟮臈l件可能因此發(fā)生變化。
4xx 請求錯(cuò)誤  這類的狀態(tài)碼代表了客戶端看起來可能發(fā)生了錯(cuò)誤跟伏,妨礙了服務(wù)器的處理丢胚。除非響應(yīng)的是一個(gè) HEAD 請求,否則服務(wù)器就應(yīng)該返回一個(gè)解釋當(dāng)前錯(cuò)誤狀況的實(shí)體受扳,以及這是臨時(shí)的還是永久性的狀況携龟。這些狀態(tài)碼適用于任何請求方法。瀏覽器應(yīng)當(dāng)向用戶顯示任何包含在此類錯(cuò)誤響應(yīng)中的實(shí)體內(nèi)容勘高。
  如果錯(cuò)誤發(fā)生時(shí)客戶端正在傳送數(shù)據(jù)峡蟋,那么使用TCP的服務(wù)器實(shí)現(xiàn)應(yīng)當(dāng)仔細(xì)確保在關(guān)閉客戶端與服務(wù)器之間的連接之前,客戶端已經(jīng)收到了包含錯(cuò)誤信息的數(shù)據(jù)包华望。如果客戶端在收到錯(cuò)誤信息后繼續(xù)向服務(wù)器發(fā)送數(shù)據(jù)蕊蝗,服務(wù)器的TCP棧將向客戶端發(fā)送一個(gè)重置數(shù)據(jù)包,以清除該客戶端所有還未識別的輸入緩沖赖舟,以免這些數(shù)據(jù)被服務(wù)器上的應(yīng)用程序讀取并干擾后者蓬戚。
400(Bad Request/錯(cuò)誤請求)
語義有誤,當(dāng)前請求無法被服務(wù)器理解宾抓。除非進(jìn)行修改子漩,否則客戶端不應(yīng)該重復(fù)提交這個(gè)請求。
請求參數(shù)有誤石洗。

401(Unauthorized/未授權(quán))  當(dāng)前請求需要用戶驗(yàn)證幢泼。該響應(yīng)必須包含一個(gè)適用于被請求資源的 WWW-Authenticate 信息頭用以詢問用戶信息〗采溃客戶端可以重復(fù)提交一個(gè)包含恰當(dāng)?shù)?Authorization 頭信息的請求缕棵。如果當(dāng)前請求已經(jīng)包含了 Authorization 證書,那么401響應(yīng)代表著服務(wù)器驗(yàn)證已經(jīng)拒絕了那些證書焦人。如果401響應(yīng)包含了與前一個(gè)響應(yīng)相同的身份驗(yàn)證詢問,且瀏覽器已經(jīng)至少嘗試了一次驗(yàn)證重父,那么瀏覽器應(yīng)當(dāng)向用戶展示響應(yīng)中包含的實(shí)體信息花椭,因?yàn)檫@個(gè)實(shí)體信息中可能包含了相關(guān)診斷信息。參見RFC 2617房午。
402(Payment Required)  該狀態(tài)碼是為了將來可能的需求而預(yù)留的矿辽。
403(Forbidden/禁止)  服務(wù)器已經(jīng)理解請求,但是拒絕執(zhí)行它。與401響應(yīng)不同的是袋倔,身份驗(yàn)證并不能提供任何幫助雕蔽,而且這個(gè)請求也不應(yīng)該被重復(fù)提交。如果這不是一個(gè) HEAD 請求宾娜,而且服務(wù)器希望能夠講清楚為何請求不能被執(zhí)行批狐,那么就應(yīng)該在實(shí)體內(nèi)描述拒絕的原因。當(dāng)然服務(wù)器也可以返回一個(gè)404響應(yīng)前塔,假如它不希望讓客戶端獲得任何信息嚣艇。
404 (Not Found/未找到)  請求失敗,請求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)华弓。沒有信息能夠告訴用戶這個(gè)狀況到底是暫時(shí)的還是永久的食零。假如服務(wù)器知道情況的話,應(yīng)當(dāng)使用410狀態(tài)碼來告知舊資源因?yàn)槟承﹥?nèi)部的配置機(jī)制問題寂屏,已經(jīng)永久的不可用贰谣,而且沒有任何可以跳轉(zhuǎn)的地址。404這個(gè)狀態(tài)碼被廣泛應(yīng)用于當(dāng)服務(wù)器不想揭示到底為何請求被拒絕或者沒有其他適合的響應(yīng)可用的情況下迁霎。
405(Method Not Allowed/方法未允許)  請求行中指定的請求方法不能被用于請求相應(yīng)的資源吱抚。該響應(yīng)必須返回一個(gè)Allow 頭信息用以表示出當(dāng)前資源能夠接受的請求方法的列表。
  鑒于 PUT欧引,DELETE 方法會對服務(wù)器上的資源進(jìn)行寫操作频伤,因而絕大部分的網(wǎng)頁服務(wù)器都不支持或者在默認(rèn)配置下不允許上述請求方法,對于此類請求均會返回405錯(cuò)誤芝此。
406 (Not Acceptable/無法訪問)  請求的資源的內(nèi)容特性無法滿足請求頭中的條件憋肖,因而無法生成響應(yīng)實(shí)體。
  除非這是一個(gè) HEAD 請求婚苹,否則該響應(yīng)就應(yīng)當(dāng)返回一個(gè)包含可以讓用戶或者瀏覽器從中選擇最合適的實(shí)體特性以及地址列表的實(shí)體岸更。實(shí)體的格式由 Content-Type 頭中定義的媒體類型決定。瀏覽器可以根據(jù)格式及自身能力自行作出最佳選擇膊升。但是怎炊,規(guī)范中并沒有定義任何作出此類自動選擇的標(biāo)準(zhǔn)。
407(Proxy Authentication Required/代理服務(wù)器認(rèn)證要求)  與401響應(yīng)類似廓译,只不過客戶端必須在代理服務(wù)器上進(jìn)行身份驗(yàn)證评肆。代理服務(wù)器必須返回一個(gè) Proxy-Authenticate 用以進(jìn)行身份詢問》乔客戶端可以返回一個(gè) Proxy-Authorization 信息頭用以驗(yàn)證瓜挽。參見RFC 2617。
408(Request Timeout/請求超時(shí))  請求超時(shí)征绸【贸龋客戶端沒有在服務(wù)器預(yù)備等待的時(shí)間內(nèi)完成一個(gè)請求的發(fā)送俄占。客戶端可以隨時(shí)再次提交這一請求而無需進(jìn)行任何更改淆衷。
409(Conflict/沖突)  由于和被請求的資源的當(dāng)前狀態(tài)之間存在沖突缸榄,請求無法完成。這個(gè)代碼只允許用在這樣的情況下才能被使用:用戶被認(rèn)為能夠解決沖突祝拯,并且會重新提交新的請求甚带。該響應(yīng)應(yīng)當(dāng)包含足夠的信息以便用戶發(fā)現(xiàn)沖突的源頭。
  沖突通常發(fā)生于對 PUT 請求的處理中鹿驼。例如欲低,在采用版本檢查的環(huán)境下,某次 PUT 提交的對特定資源的修改請求所附帶的版本信息與之前的某個(gè)(第三方)請求向沖突畜晰,那么此時(shí)服務(wù)器就應(yīng)該返回一個(gè)409錯(cuò)誤砾莱,告知用戶請求無法完成。此時(shí)凄鼻,響應(yīng)實(shí)體中很可能會包含兩個(gè)沖突版本之間的差異比較腊瑟,以便用戶重新提交歸并以后的新版本。
410(Gone/已經(jīng)不存在)  被請求的資源在服務(wù)器上已經(jīng)不再可用块蚌,而且沒有任何已知的轉(zhuǎn)發(fā)地址闰非。這樣的狀況應(yīng)當(dāng)被認(rèn)為是永久性的。如果可能峭范,擁有鏈接編輯功能的客戶端應(yīng)當(dāng)在獲得用戶許可后刪除所有指向這個(gè)地址的引用财松。如果服務(wù)器不知道或者無法確定這個(gè)狀況是否是永久的,那么就應(yīng)該使用404狀態(tài)碼纱控。除非額外說明辆毡,否則這個(gè)響應(yīng)是可緩存的。
  410響應(yīng)的目的主要是幫助網(wǎng)站管理員維護(hù)網(wǎng)站甜害,通知用戶該資源已經(jīng)不再可用舶掖,并且服務(wù)器擁有者希望所有指向這個(gè)資源的遠(yuǎn)端連接也被刪除。這類事件在限時(shí)尔店、增值服務(wù)中很普遍眨攘。同樣,410響應(yīng)也被用于通知客戶端在當(dāng)前服務(wù)器站點(diǎn)上嚣州,原本屬于某個(gè)個(gè)人的資源已經(jīng)不再可用鲫售。當(dāng)然,是否需要把所有永久不可用的資源標(biāo)記為’410 Gone’该肴,以及是否需要保持此標(biāo)記多長時(shí)間霜医,完全取決于服務(wù)器擁有者瘟檩。
411(Length Required/需要數(shù)據(jù)長度)  服務(wù)器拒絕在沒有定義 Content-Length 頭的情況下接受請求者铜。在添加了表明請求消息體長度的有效 Content-Length 頭之后,客戶端可以再次提交該請求歌溉。
412(Precondition Failed/先決條件錯(cuò)誤)  服務(wù)器在驗(yàn)證在請求的頭字段中給出先決條件時(shí),沒能滿足其中的一個(gè)或多個(gè)贪惹。這個(gè)狀態(tài)碼允許客戶端在獲取資源時(shí)在請求的元信息(請求頭字段數(shù)據(jù))中設(shè)置先決條件媳维,以此避免該請求方法被應(yīng)用到其希望的內(nèi)容以外的資源上。
413(Request Entity Too Large/請求實(shí)體過大)  服務(wù)器拒絕處理當(dāng)前請求铸抑,因?yàn)樵撜埱筇峤坏膶?shí)體數(shù)據(jù)大小超過了服務(wù)器愿意或者能夠處理的范圍贡耽。此種情況下,服務(wù)器可以關(guān)閉連接以免客戶端繼續(xù)發(fā)送此請求鹊汛。   如果這個(gè)狀況是臨時(shí)的蒲赂,服務(wù)器應(yīng)當(dāng)返回一個(gè) Retry-After 的響應(yīng)頭,以告知客戶端可以在多少時(shí)間以后重新嘗試刁憋。
414(Request URI Too Long/請求URI過長)  請求的URI 長度超過了服務(wù)器能夠解釋的長度滥嘴,因此服務(wù)器拒絕對該請求提供服務(wù)。這比較少見至耻,通常的情況包括:
本應(yīng)使用POST方法的表單提交變成了GET方法若皱,導(dǎo)致查詢字符串(Query String)過長。
重定向URI “黑洞”尘颓,例如每次重定向把舊的 URI 作為新的 URI 的一部分走触,導(dǎo)致在若干次重定向后 URI 超長。
客戶端正在嘗試?yán)媚承┓?wù)器中存在的安全漏洞攻擊服務(wù)器疤苹。這類服務(wù)器使用固定長度的緩沖讀取或操作請求的 URI互广,當(dāng) GET 后的參數(shù)超過某個(gè)數(shù)值后,可能會產(chǎn)生緩沖區(qū)溢出卧土,導(dǎo)致任意代碼被執(zhí)行[1]惫皱。沒有此類漏洞的服務(wù)器,應(yīng)當(dāng)返回414狀態(tài)碼夸溶。

415 (Unsupported Media Type/不支持的媒體格式)  對于當(dāng)前請求的方法和所請求的資源逸吵,請求中提交的實(shí)體并不是服務(wù)器中所支持的格式,因此請求被拒絕缝裁。
416(Requested Range Not Satisfiable/請求范圍無法滿足)  如果請求中包含了 Range 請求頭扫皱,并且 Range 中指定的任何數(shù)據(jù)范圍都與當(dāng)前資源的可用范圍不重合,同時(shí)請求中又沒有定義 If-Range 請求頭捷绑,那么服務(wù)器就應(yīng)當(dāng)返回416狀態(tài)碼韩脑。
  假如 Range 使用的是字節(jié)范圍,那么這種情況就是指請求指定的所有數(shù)據(jù)范圍的首字節(jié)位置都超過了當(dāng)前資源的長度粹污。服務(wù)器也應(yīng)當(dāng)在返回416狀態(tài)碼的同時(shí)段多,包含一個(gè) Content-Range 實(shí)體頭,用以指明當(dāng)前資源的長度壮吩。這個(gè)響應(yīng)也被禁止使用 multipart/byteranges 作為其 Content-Type进苍。
417(Expectation Failed/期望失敗)  在請求頭 Expect 中指定的預(yù)期內(nèi)容無法被服務(wù)器滿足加缘,或者這個(gè)服務(wù)器是一個(gè)代理服務(wù)器,它有明顯的證據(jù)證明在當(dāng)前路由的下一個(gè)節(jié)點(diǎn)上觉啊,Expect 的內(nèi)容無法被滿足拣宏。
418(I’m a teapot/我是茶壺) 1998年IETF的愚人節(jié)笑話, 在RFC2324 超文本咖啡壺控制協(xié)議中定義的,并不需要在真實(shí)的HTTP服務(wù)器中定義杠人。
超文本咖啡壺控制協(xié)議:用于控制勋乾、監(jiān)測和診斷咖啡壺的協(xié)議,愚人節(jié)惡搞之作嗡善。
421(There are too many connections from your internet address)  從當(dāng)前客戶端所在的IP地址到服務(wù)器的連接數(shù)超過了服務(wù)器許可的最大范圍辑莫。通常,這里的IP地址指的是從服務(wù)器上看到的客戶端地址(比如用戶的網(wǎng)關(guān)或者代理服務(wù)器地址)罩引。在這種情況下各吨,連接數(shù)的計(jì)算可能涉及到不止一個(gè)終端用戶。
422(Unprocessable Entity)  請求格式正確袁铐,但是由于含有語義錯(cuò)誤绅你,無法響應(yīng)。(RFC 4918 WebDAV)423 Locked   當(dāng)前資源被鎖定昭躺。(RFC 4918 WebDAV)
424(Failed Dependency)  由于之前的某個(gè)請求發(fā)生的錯(cuò)誤忌锯,導(dǎo)致當(dāng)前請求失敗,例如 PROPPATCH领炫。(RFC 4918 WebDAV)
425(Unordered Collection)  在WebDav Advanced Collections 草案中定義偶垮,但是未出現(xiàn)在《WebDAV 順序集協(xié)議》(RFC 3658)中。
426(Upgrade Required)  客戶端應(yīng)當(dāng)切換到TLS/1.0帝洪。(RFC 2817)
449(Retry With)  由微軟擴(kuò)展似舵,代表請求應(yīng)當(dāng)在執(zhí)行完適當(dāng)?shù)牟僮骱筮M(jìn)行重試。****
5xx 服務(wù)器錯(cuò)誤  這類狀態(tài)碼代表了服務(wù)器在處理請求的過程中有錯(cuò)誤或者異常狀態(tài)發(fā)生葱峡,也有可能是服務(wù)器意識到以當(dāng)前的軟硬件資源無法完成對請求的處理砚哗。除非這是一個(gè)HEAD 請求,否則服務(wù)器應(yīng)當(dāng)包含一個(gè)解釋當(dāng)前錯(cuò)誤狀態(tài)以及這個(gè)狀況是臨時(shí)的還是永久的解釋信息實(shí)體砰奕。瀏覽器應(yīng)當(dāng)向用戶展示任何在當(dāng)前響應(yīng)中被包含的實(shí)體蛛芥。   這些狀態(tài)碼適用于任何響應(yīng)方法。
500(Internal Server Error/內(nèi)部服務(wù)器錯(cuò)誤)  服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況军援,導(dǎo)致了它無法完成對請求的處理仅淑。一般來說,這個(gè)問題都會在服務(wù)器的程序碼出錯(cuò)時(shí)出現(xiàn)胸哥。
501 (Not Implemented/未實(shí)現(xiàn))  服務(wù)器不支持當(dāng)前請求所需要的某個(gè)功能涯竟。當(dāng)服務(wù)器無法識別請求的方法,并且無法支持其對任何資源的請求。
502(Bad Gateway/錯(cuò)誤的網(wǎng)關(guān))  作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請求時(shí)庐船,從上游服務(wù)器接收到無效的響應(yīng)银酬。
503(Service Unavailable/服務(wù)無法獲得)  由于臨時(shí)的服務(wù)器維護(hù)或者過載,服務(wù)器當(dāng)前無法處理請求筐钟。這個(gè)狀況是臨時(shí)的捡硅,并且將在一段時(shí)間以后恢復(fù)。如果能夠預(yù)計(jì)延遲時(shí)間盗棵,那么響應(yīng)中可以包含一個(gè) Retry-After 頭用以標(biāo)明這個(gè)延遲時(shí)間。如果沒有給出這個(gè) Retry-After 信息北发,那么客戶端應(yīng)當(dāng)以處理500響應(yīng)的方式處理它纹因。
  注意:503狀態(tài)碼的存在并不意味著服務(wù)器在過載的時(shí)候必須使用它。某些服務(wù)器只不過是希望拒絕客戶端的連接琳拨。
504(Gateway Timeout/網(wǎng)關(guān)超時(shí))  作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請求時(shí)瞭恰,未能及時(shí)從上游服務(wù)器(URI標(biāo)識出的服務(wù)器,例如HTTP狱庇、FTP惊畏、LDAP)或者輔助服務(wù)器(例如DNS)收到響應(yīng)。   注意:某些代理服務(wù)器在DNS查詢超時(shí)時(shí)會返回400或者500錯(cuò)誤
505(HTTP Version Not Supported/不支持的 HTTP 版本)  服務(wù)器不支持密任,或者拒絕支持在請求中使用的 HTTP 版本颜启。這暗示著服務(wù)器不能或不愿使用與客戶端相同的版本。響應(yīng)中應(yīng)當(dāng)包含一個(gè)描述了為何版本不被支持以及服務(wù)器支持哪些協(xié)議的實(shí)體浪讳。
506(Variant Also Negotiates)  由《透明內(nèi)容協(xié)商協(xié)議》(RFC 2295)擴(kuò)展缰盏,代表服務(wù)器存在內(nèi)部配置錯(cuò)誤:被請求的協(xié)商變元資源被配置為在透明內(nèi)容協(xié)商中使用自己,因此在一個(gè)協(xié)商處理中不是一個(gè)合適的重點(diǎn)淹遵。
507(Insufficient Storage)  服務(wù)器無法存儲完成請求所必須的內(nèi)容口猜。這個(gè)狀況被認(rèn)為是臨時(shí)的。WebDAV (RFC 4918)
509(Bandwidth Limit Exceeded)  服務(wù)器達(dá)到帶寬限制透揣。這不是一個(gè)官方的狀態(tài)碼济炎,但是仍被廣泛使用。
510(Not Extended)  獲取資源所需要的策略并沒有沒滿足辐真。(RFC 2774)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末须尚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子侍咱,更是在濱河造成了極大的恐慌恨闪,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件放坏,死亡現(xiàn)場離奇詭異咙咽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)淤年,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門钧敞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜡豹,“玉大人,你說我怎么就攤上這事溉苛【盗” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵愚战,是天一觀的道長娇唯。 經(jīng)常有香客問我,道長寂玲,這世上最難降的妖魔是什么塔插? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮拓哟,結(jié)果婚禮上想许,老公的妹妹穿的比我還像新娘。我一直安慰自己断序,他們只是感情好流纹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著违诗,像睡著了一般漱凝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诸迟,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天碉哑,我揣著相機(jī)與錄音,去河邊找鬼亮蒋。 笑死扣典,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的慎玖。 我是一名探鬼主播贮尖,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼趁怔!你這毒婦竟也來了湿硝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤润努,失蹤者是張志新(化名)和其女友劉穎关斜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铺浇,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡痢畜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丁稀。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吼拥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出线衫,到底是詐尸還是另有隱情凿可,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布授账,位于F島的核電站枯跑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏白热。R本人自食惡果不足惜敛助,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棘捣。 院中可真熱鬧,春花似錦休建、人聲如沸乍恐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茵烈。三九已至,卻和暖如春砌些,著一層夾襖步出監(jiān)牢的瞬間呜投,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工存璃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仑荐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓纵东,卻偏偏與公主長得像粘招,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子偎球,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

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

  • 1xx消息: 這一類型的狀態(tài)碼洒扎,代表請求已被接受,需要繼續(xù)處理衰絮。這類響應(yīng)是臨時(shí)響應(yīng)袍冷,只包含狀態(tài)行和某些可選的響應(yīng)頭...
    齊舞647閱讀 338評論 0 1
  • 1xx消息 這一類型的狀態(tài)碼,代表請求已被接受猫牡,需要繼續(xù)處理胡诗。這類響應(yīng)是臨時(shí)響應(yīng),只包含狀態(tài)行和某些可選的響應(yīng)頭信...
    一只大橘閱讀 483評論 0 1
  • 網(wǎng)絡(luò)請求是iOS項(xiàng)目的一個(gè)大部分,而且大部分的iOS的項(xiàng)目的網(wǎng)絡(luò)請求是根據(jù)AFN進(jìn)行的二次封裝,我們查看返回的結(jié)果...
    FR_Zhang閱讀 6,925評論 15 46
  • 狀態(tài)碼 含義100 客戶端應(yīng)當(dāng)繼續(xù)發(fā)送請求。這個(gè)臨時(shí)響應(yīng)是用來通知客戶端它的部分請求已經(jīng)被服務(wù)器接收乃戈,且仍未被拒絕...
    Fellers閱讀 191評論 0 1
  • HTTP狀態(tài)碼的分類 HTTP狀態(tài)碼由三個(gè)十進(jìn)制數(shù)字組成褂痰,第一個(gè)十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩個(gè)數(shù)字沒有分類的...
    薄涼_簡書閱讀 569評論 0 1