http狀態(tài)碼




五、請(qǐng)求錯(cuò)誤(4字頭)
這類的狀態(tài)碼代表了客戶端看起來可能發(fā)生了錯(cuò)誤,妨礙了服務(wù)器的處理。除非響應(yīng)的是一個(gè) HEAD 請(qǐng)求,否則服務(wù)器就應(yīng)該返回一個(gè)解釋當(dāng)前錯(cuò)誤狀況的實(shí)體,以及這是臨時(shí)的還是永久性的狀況。這些狀態(tài)碼適用于任何請(qǐng)求方法。瀏覽器應(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í)別的輸入緩沖,以免這些數(shù)據(jù)被服務(wù)器上的應(yīng)用程序讀取并干擾后者。
400 Bad Request
1、語義有誤,當(dāng)前請(qǐng)求無法被服務(wù)器理解。除非進(jìn)行修改,否則客戶端不應(yīng)該重復(fù)提交這個(gè)請(qǐng)求。
2、請(qǐng)求參數(shù)有誤。
401 Unauthorized
當(dāng)前請(qǐng)求需要用戶驗(yàn)證。該響應(yīng)必須包含一個(gè)適用于被請(qǐng)求資源的 WWW-Authenticate 信息頭用以詢問用戶信息??蛻舳丝梢灾貜?fù)提交一個(gè)包含恰當(dāng)?shù)?Authorization 頭信息的請(qǐng)求。如果當(dāng)前請(qǐ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)理解請(qǐng)求,但是拒絕執(zhí)行它。與401響應(yīng)不同的是,身份驗(yàn)證并不能提供任何幫助,而且這個(gè)請(qǐng)求也不應(yīng)該被重復(fù)提交。如果這不是一個(gè) HEAD 請(qǐng)求,而且服務(wù)器希望能夠講清楚為何請(qǐng)求不能被執(zhí)行,那么就應(yīng)該在實(shí)體內(nèi)描述拒絕的原因。當(dāng)然服務(wù)器也可以返回一個(gè)404響應(yīng),假如它不希望讓客戶端獲得任何信息。
404 Not Found
請(qǐng)求失敗,請(qǐng)求所希望得到的資源未被在服務(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ù)器不想揭示到底為何請(qǐng)求被拒絕或者沒有其他適合的響應(yīng)可用的情況下。出現(xiàn)這個(gè)錯(cuò)誤的最有可能的原因是服務(wù)器端沒有這個(gè)頁面。
405 Method Not Allowed
請(qǐng)求行中指定的請(qǐng)求方法不能被用于請(qǐng)求相應(yīng)的資源。該響應(yīng)必須返回一個(gè)Allow 頭信息用以表示出當(dāng)前資源能夠接受的請(qǐng)求方法的列表。
鑒于 PUT,DELETE 方法會(huì)對(duì)服務(wù)器上的資源進(jìn)行寫操作,因而絕大部分的網(wǎng)頁服務(wù)器都不支持或者在默認(rèn)配置下不允許上述請(qǐng)求方法,對(duì)于此類請(qǐng)求均會(huì)返回405錯(cuò)誤。
406 Not Acceptable
請(qǐng)求的資源的內(nèi)容特性無法滿足請(qǐng)求頭中的條件,因而無法生成響應(yīng)實(shí)體。
除非這是一個(gè) HEAD 請(qǐng)求,否則該響應(yīng)就應(yīng)當(dāng)返回一個(gè)包含可以讓用戶或者瀏覽器從中選擇最合適的實(shí)體特性以及地址列表的實(shí)體。實(shí)體的格式由 Content-Type 頭中定義的媒體類型決定。瀏覽器可以根據(jù)格式及自身能力自行作出最佳選擇。但是,規(guī)范中并沒有定義任何作出此類自動(dòng)選擇的標(biāo)準(zhǔn)。
407 Proxy Authentication Required
與401響應(yīng)類似,只不過客戶端必須在代理服務(wù)器上進(jìn)行身份驗(yàn)證。代理服務(wù)器必須返回一個(gè) Proxy-Authenticate 用以進(jìn)行身份詢問??蛻舳丝梢苑祷匾粋€(gè) Proxy-Authorization 信息頭用以驗(yàn)證。參見RFC 2617。
408 Request Timeout
請(qǐng)求超時(shí)??蛻舳藳]有在服務(wù)器預(yù)備等待的時(shí)間內(nèi)完成一個(gè)請(qǐng)求的發(fā)送。客戶端可以隨時(shí)再次提交這一請(qǐng)求而無需進(jìn)行任何更改。
409 Conflict
由于和被請(qǐng)求的資源的當(dāng)前狀態(tài)之間存在沖突,請(qǐng)求無法完成。這個(gè)代碼只允許用在這樣的情況下才能被使用:用戶被認(rèn)為能夠解決沖突,并且會(huì)重新提交新的請(qǐng)求。該響應(yīng)應(yīng)當(dāng)包含足夠的信息以便用戶發(fā)現(xiàn)沖突的源頭。
沖突通常發(fā)生于對(duì) PUT 請(qǐng)求的處理中。例如,在采用版本檢查的環(huán)境下,某次 PUT 提交的對(duì)特定資源的修改請(qǐng)求所附帶的版本信息與之前的某個(gè)(第三方)請(qǐng)求向沖突,那么此時(shí)服務(wù)器就應(yīng)該返回一個(gè)409錯(cuò)誤,告知用戶請(qǐng)求無法完成。此時(shí),響應(yīng)實(shí)體中很可能會(huì)包含兩個(gè)沖突版本之間的差異比較,以便用戶重新提交歸并以后的新版本。
410 Gone
被請(qǐ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
服務(wù)器拒絕在沒有定義 Content-Length 頭的情況下接受請(qǐng)求。在添加了表明請(qǐng)求消息體長度的有效 Content-Length 頭之后,客戶端可以再次提交該請(qǐng)求。
412 Precondition Failed
服務(wù)器在驗(yàn)證在請(qǐng)求的頭字段中給出先決條件時(shí),沒能滿足其中的一個(gè)或多個(gè)。這個(gè)狀態(tài)碼允許客戶端在獲取資源時(shí)在請(qǐng)求的元信息(請(qǐng)求頭字段數(shù)據(jù))中設(shè)置先決條件,以此避免該請(qǐng)求方法被應(yīng)用到其希望的內(nèi)容以外的資源上。
413 Request Entity Too Large
服務(wù)器拒絕處理當(dāng)前請(qǐng)求,因?yàn)樵撜?qǐng)求提交的實(shí)體數(shù)據(jù)大小超過了服務(wù)器愿意或者能夠處理的范圍。此種情況下,服務(wù)器可以關(guān)閉連接以免客戶端繼續(xù)發(fā)送此請(qǐng)求。
如果這個(gè)狀況是臨時(shí)的,服務(wù)器應(yīng)當(dāng)返回一個(gè) Retry-After 的響應(yīng)頭,以告知客戶端可以在多少時(shí)間以后重新嘗試。
414 Request-URI Too Long
請(qǐng)求的URI 長度超過了服務(wù)器能夠解釋的長度,因此服務(wù)器拒絕對(duì)該請(qǐng)求提供服務(wù)。這比較少見,通常的情況包括:
本應(yīng)使用POST方法的表單提交變成了GET方法,導(dǎo)致查詢字符串(Query String)過長。
重定向URI “黑洞”,例如每次重定向把舊的 URI 作為新的 URI 的一部分,導(dǎo)致在若干次重定向后 URI 超長。
客戶端正在嘗試?yán)媚承┓?wù)器中存在的安全漏洞攻擊服務(wù)器。這類服務(wù)器使用固定長度的緩沖讀取或操作請(qǐng)求的 URI,當(dāng) GET 后的參數(shù)超過某個(gè)數(shù)值后,可能會(huì)產(chǎn)生緩沖區(qū)溢出,導(dǎo)致任意代碼被執(zhí)行[1]。沒有此類漏洞的服務(wù)器,應(yīng)當(dāng)返回414狀態(tài)碼。
415 Unsupported Media Type
對(duì)于當(dāng)前請(qǐng)求的方法和所請(qǐng)求的資源,請(qǐng)求中提交的實(shí)體并不是服務(wù)器中所支持的格式,因此請(qǐng)求被拒絕。
416 Requested Range Not Satisfiable
如果請(qǐng)求中包含了 Range 請(qǐng)求頭,并且 Range 中指定的任何數(shù)據(jù)范圍都與當(dāng)前資源的可用范圍不重合,同時(shí)請(qǐng)求中又沒有定義 If-Range 請(qǐng)求頭,那么服務(wù)器就應(yīng)當(dāng)返回416狀態(tài)碼。
假如 Range 使用的是字節(jié)范圍,那么這種情況就是指請(qǐng)求指定的所有數(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
在請(qǐng)求頭 Expect 中指定的預(yù)期內(nèi)容無法被服務(wù)器滿足,或者這個(gè)服務(wù)器是一個(gè)代理服務(wù)器,它有明顯的證據(jù)證明在當(dāng)前路由的下一個(gè)節(jié)點(diǎn)上,Expect 的內(nèi)容無法被滿足。
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
請(qǐng)求格式正確,但是由于含有語義錯(cuò)誤,無法響應(yīng)。(RFC 4918 WebDAV)
423 Locked
當(dāng)前資源被鎖定。(RFC 4918 WebDAV)
424 Failed Dependency
由于之前的某個(gè)請(qǐng)求發(fā)生的錯(cuò)誤,導(dǎo)致當(dāng)前請(qǐ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ò)展,代表請(qǐng)求應(yīng)當(dāng)在執(zhí)行完適當(dāng)?shù)牟僮骱筮M(jìn)行重試
六、服務(wù)器錯(cuò)誤(5字頭)
這類狀態(tài)碼代表了服務(wù)器在處理請(qǐng)求的過程中有錯(cuò)誤或者異常狀態(tài)發(fā)生,也有可能是服務(wù)器意識(shí)到以當(dāng)前的軟硬件資源無法完成對(duì)請(qǐng)求的處理。除非這是一個(gè)HEAD 請(qǐng)求,否則服務(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
服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況,導(dǎo)致了它無法完成對(duì)請(qǐng)求的處理。一般來說,這個(gè)問題都會(huì)在服務(wù)器端的源代碼出現(xiàn)錯(cuò)誤時(shí)出現(xiàn)。
501 Not Implemented
服務(wù)器不支持當(dāng)前請(qǐng)求所需要的某個(gè)功能。當(dāng)服務(wù)器無法識(shí)別請(qǐng)求的方法,并且無法支持其對(duì)任何資源的請(qǐng)求。
502 Bad Gateway
作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請(qǐng)求時(shí),從上游服務(wù)器接收到無效的響應(yīng)。
503 Service Unavailable
由于臨時(shí)的服務(wù)器維護(hù)或者過載,服務(wù)器當(dāng)前無法處理請(qǐ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)或者代理工作的服務(wù)器嘗試執(zhí)行請(qǐng)求時(shí),未能及時(shí)從上游服務(wù)器(URI標(biāo)識(shí)出的服務(wù)器,例如HTTP、FTP、LDAP)或者輔助服務(wù)器(例如DNS)收到響應(yīng)。
注意:某些代理服務(wù)器在DNS查詢超時(shí)時(shí)會(huì)返回400或者500錯(cuò)誤
505 HTTP Version Not Supported
服務(wù)器不支持,或者拒絕支持在請(qǐng)求中使用的 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ò)誤:被請(qǐng)求的協(xié)商變?cè)Y源被配置為在透明內(nèi)容協(xié)商中使用自己,因此在一個(gè)協(xié)商處理中不是一個(gè)合適的重點(diǎn)。
507 Insufficient Storage
服務(wù)器無法存儲(chǔ)完成請(qǐng)求所必須的內(nèi)容。這個(gè)狀況被認(rèn)為是臨時(shí)的。WebDAV (RFC 4918)
508 Loop Detected
509 Bandwidth Limit Exceeded
服務(wù)器達(dá)到帶寬限制。這不是一個(gè)官方的狀態(tài)碼,但是仍被廣泛使用。
510 Not Extended
獲取資源所需要的策略并沒有沒滿足。(RFC 2774)
600 Unparseable Response Headers
源站沒有返回響應(yīng)頭部,只返回實(shí)體內(nèi)容