http狀態(tài)碼(英語:HTTP Status Code)是用以表示網(wǎng)頁服務(wù)器超文本傳輸協(xié)議響應(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)之一。所示的消息短語是典型的,但是可以提供任何可讀取的替代方案。 除非另有說明,狀態(tài)碼是HTTP / 1.1標(biāo)準(zhǔn)(RFC 7231)的一部分。
HTTP狀態(tài)碼的官方注冊(cè)表由互聯(lián)網(wǎng)號(hào)碼分配局(Internet Assigned Numbers Authority)維護(hù)。
微軟互聯(lián)網(wǎng)信息服務(wù) (Microsoft Internet Information Services)有時(shí)會(huì)使用額外的十進(jìn)制子代碼來獲取更多具體信息,但是這些子代碼僅出現(xiàn)在響應(yīng)有效內(nèi)容和文檔中,而不是代替實(shí)際的HTTP狀態(tài)代碼。
1、1xx消息
2、2xx成功
3、3xx重定向
4、4xx客戶端錯(cuò)誤
5、5xx服務(wù)器錯(cuò)誤
1xx消息
這一類型的狀態(tài)碼,代表請(qǐng)求已被接受,需要繼續(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)。[4] 這些狀態(tài)碼代表的響應(yīng)都是信息性的,標(biāo)示客戶應(yīng)該采取的其他行動(dòng)。
100 Continue
服務(wù)器已經(jīng)接收到請(qǐng)求頭,并且客戶端應(yīng)繼續(xù)發(fā)送請(qǐng)求主體(在需要發(fā)送身體的請(qǐng)求的情況下:例如,POST請(qǐng)求),或者如果請(qǐng)求已經(jīng)完成,忽略這個(gè)響應(yīng)。服務(wù)器必須在請(qǐng)求完成后向客戶端發(fā)送一個(gè)最終響應(yīng)。要使服務(wù)器檢查請(qǐng)求的頭部,客戶端必須在其初始請(qǐng)求中發(fā)送Expect: 100-continue作為頭部,并在發(fā)送正文之前接收100 Continue狀態(tài)代碼。響應(yīng)代碼417期望失敗表示請(qǐng)求不應(yīng)繼續(xù)。
101 Switching Protocols
服務(wù)器已經(jīng)理解了客戶端的請(qǐng)求,并將通過Upgrade消息頭通知客戶端采用不同的協(xié)議來完成這個(gè)請(qǐng)求。在發(fā)送完這個(gè)響應(yīng)最后的空行后,服務(wù)器將會(huì)切換到在Upgrade消息頭中定義的那些協(xié)議。
只有在切換新的協(xié)議更有好處的時(shí)候才應(yīng)該采取類似措施。例如,切換到新的HTTP版本(如HTTP/2)比舊版本更有優(yōu)勢(shì),或者切換到一個(gè)實(shí)時(shí)且同步的協(xié)議(如WebSocket)以傳送利用此類特性的資源。
102 Processing(WebDAV;RFC 2518)
WebDAV請(qǐng)求可能包含許多涉及文件操作的子請(qǐng)求,需要很長(zhǎng)時(shí)間才能完成請(qǐng)求。該代碼表示服務(wù)器已經(jīng)收到并正在處理請(qǐng)求,但無響應(yīng)可用。[6]這樣可以防止客戶端超時(shí),并假設(shè)請(qǐng)求丟失。
2xx成功[編輯]
這一類型的狀態(tài)碼,代表請(qǐng)求已成功被服務(wù)器接收、理解、并接受。
200 OK
請(qǐng)求已成功,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。實(shí)際的響應(yīng)將取決于所使用的請(qǐng)求方法。在GET請(qǐng)求中,響應(yīng)將包含與請(qǐng)求的資源相對(duì)應(yīng)的實(shí)體。在POST請(qǐng)求中,響應(yīng)將包含描述或操作結(jié)果的實(shí)體。[7]
201 Created
請(qǐng)求已經(jīng)被實(shí)現(xiàn),而且有一個(gè)新的資源已經(jīng)依據(jù)請(qǐng)求的需要而創(chuàng)建,且其URI已經(jīng)隨Location頭信息返回。假如需要的資源無法及時(shí)創(chuàng)建的話,應(yīng)當(dāng)返回’202 Accepted’。
202 Accepted
服務(wù)器已接受請(qǐng)求,但尚未處理。最終該請(qǐng)求可能會(huì)也可能不會(huì)被執(zhí)行,并且可能在處理發(fā)生時(shí)被禁止。
203 Non-Authoritative Information(自HTTP / 1.1起)
服務(wù)器是一個(gè)轉(zhuǎn)換代理服務(wù)器(transforming proxy,例如網(wǎng)絡(luò)加速器),以200 OK狀態(tài)碼為起源,但回應(yīng)了原始響應(yīng)的修改版本。
204 No Content
服務(wù)器成功處理了請(qǐng)求,沒有返回任何內(nèi)容。
205 Reset Content
服務(wù)器成功處理了請(qǐng)求,但沒有返回任何內(nèi)容。與204響應(yīng)不同,此響應(yīng)要求請(qǐng)求者重置文檔視圖。
206 Partial Content(RFC 7233)
服務(wù)器已經(jīng)成功處理了部分GET請(qǐng)求。類似于FlashGet或者迅雷這類的HTTP 下載工具都是使用此類響應(yīng)實(shí)現(xiàn)斷點(diǎn)續(xù)傳或者將一個(gè)大文檔分解為多個(gè)下載段同時(shí)下載。
207 Multi-Status(WebDAV;RFC 4918)
代表之后的消息體將是一個(gè)XML消息,并且可能依照之前子請(qǐng)求數(shù)量的不同,包含一系列獨(dú)立的響應(yīng)代碼。
208 Already Reported (WebDAV;RFC 5842)
DAV綁定的成員已經(jīng)在(多狀態(tài))響應(yīng)之前的部分被列舉,且未被再次包含。
226 IM Used (RFC 3229)
服務(wù)器已經(jīng)滿足了對(duì)資源的請(qǐng)求,對(duì)實(shí)體請(qǐng)求的一個(gè)或多個(gè)實(shí)體操作的結(jié)果表示。
3xx重定向
這類狀態(tài)碼代表需要客戶端采取進(jìn)一步的操作才能完成請(qǐng)求。通常,這些狀態(tài)碼用來重定向,后續(xù)的請(qǐng)求地址(重定向目標(biāo))在本次響應(yīng)的Location域中指明。
當(dāng)且僅當(dāng)后續(xù)的請(qǐng)求所使用的方法是GET或者HEAD時(shí),用戶瀏覽器才可以在沒有用戶介入的情況下自動(dòng)提交所需要的后續(xù)請(qǐng)求??蛻舳藨?yīng)當(dāng)自動(dòng)監(jiān)測(cè)無限循環(huán)重定向(例如:A→B→C→……→A或A→A),因?yàn)檫@會(huì)導(dǎo)致服務(wù)器和客戶端大量不必要的資源消耗。按照HTTP/1.0版規(guī)范的建議,瀏覽器不應(yīng)自動(dòng)訪問超過5次的重定向。
300 Multiple Choices
被請(qǐng)求的資源有一系列可供選擇的回饋信息,每個(gè)都有自己特定的地址和瀏覽器驅(qū)動(dòng)的商議信息。用戶或?yàn)g覽器能夠自行選擇一個(gè)首選的地址進(jìn)行重定向。
除非這是一個(gè)HEAD請(qǐng)求,否則該響應(yīng)應(yīng)當(dāng)包括一個(gè)資源特性及地址的列表的實(shí)體,以便用戶或?yàn)g覽器從中選擇最合適的重定向地址。這個(gè)實(shí)體的格式由Content-Type定義的格式所決定。瀏覽器可能根據(jù)響應(yīng)的格式以及瀏覽器自身能力,自動(dòng)作出最合適的選擇。當(dāng)然,RFC 2616規(guī)范并沒有規(guī)定這樣的自動(dòng)選擇該如何進(jìn)行。
如果服務(wù)器本身已經(jīng)有了首選的回饋選擇,那么在Location中應(yīng)當(dāng)指明這個(gè)回饋的URI;瀏覽器可能會(huì)將這個(gè)Location值作為自動(dòng)重定向的地址。此外,除非額外指定,否則這個(gè)響應(yīng)也是可緩存的。
301 Moved Permanently
被請(qǐng)求的資源已永久移動(dòng)到新位置,并且將來任何對(duì)此資源的引用都應(yīng)該使用本響應(yīng)返回的若干個(gè)URI之一。如果可能,擁有鏈接編輯功能的客戶端應(yīng)當(dāng)自動(dòng)把請(qǐng)求的地址修改為從服務(wù)器反饋回來的地址。[19]除非額外指定,否則這個(gè)響應(yīng)也是可緩存的。
新的永久性的URI應(yīng)當(dāng)在響應(yīng)的Location域中返回。除非這是一個(gè)HEAD請(qǐng)求,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的URI的超鏈接及簡(jiǎn)短說明。
如果這不是一個(gè)GET或者HEAD請(qǐng)求,那么瀏覽器禁止自動(dòng)進(jìn)行重定向,除非得到用戶的確認(rèn),因?yàn)檎?qǐng)求的條件可能因此發(fā)生變化。
注意:對(duì)于某些使用HTTP/1.0協(xié)議的瀏覽器,當(dāng)它們發(fā)送的POST請(qǐng)求得到了一個(gè)301響應(yīng)的話,接下來的重定向請(qǐng)求將會(huì)變成GET方式。
302 Found
要求客戶端執(zhí)行臨時(shí)重定向(原始描述短語為“Moved Temporarily”)。由于這樣的重定向是臨時(shí)的,客戶端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請(qǐng)求。只有在Cache-Control或Expires中進(jìn)行了指定的情況下,這個(gè)響應(yīng)才是可緩存的。
新的臨時(shí)性的URI應(yīng)當(dāng)在響應(yīng)的Location域中返回。除非這是一個(gè)HEAD請(qǐng)求,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的URI的超鏈接及簡(jiǎn)短說明。
如果這不是一個(gè)GET或者HEAD請(qǐng)求,那么瀏覽器禁止自動(dòng)進(jìn)行重定向,除非得到用戶的確認(rèn),因?yàn)檎?qǐng)求的條件可能因此發(fā)生變化。
注意:雖然RFC 1945和RFC 2068規(guī)范不允許客戶端在重定向時(shí)改變請(qǐng)求的方法,但是很多現(xiàn)存的瀏覽器將302響應(yīng)視作為303響應(yīng),并且使用GET方式訪問在Location中規(guī)定的URI,而無視原先請(qǐng)求的方法。[21]因此狀態(tài)碼303和307被添加了進(jìn)來,用以明確服務(wù)器期待客戶端進(jìn)行何種反應(yīng)。
303 See Other
對(duì)應(yīng)當(dāng)前請(qǐng)求的響應(yīng)可以在另一個(gè)URI上被找到,當(dāng)響應(yīng)于POST(或PUT / DELETE)接收到響應(yīng)時(shí),客戶端應(yīng)該假定服務(wù)器已經(jīng)收到數(shù)據(jù),并且應(yīng)該使用單獨(dú)的GET消息發(fā)出重定向。這個(gè)方法的存在主要是為了允許由腳本激活的POST請(qǐng)求輸出重定向到一個(gè)新的資源。這個(gè)新的URI不是原始資源的替代引用。同時(shí),303響應(yīng)禁止被緩存。當(dāng)然,第二個(gè)請(qǐng)求(重定向)可能被緩存。
新的URI應(yīng)當(dāng)在響應(yīng)的Location域中返回。除非這是一個(gè)HEAD請(qǐng)求,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的URI的超鏈接及簡(jiǎn)短說明。
注意:許多HTTP/1.1版以前的瀏覽器不能正確理解303狀態(tài)。如果需要考慮與這些瀏覽器之間的互動(dòng),302狀態(tài)碼應(yīng)該可以勝任,因?yàn)榇蠖鄶?shù)的瀏覽器處理302響應(yīng)時(shí)的方式恰恰就是上述規(guī)范要求客戶端處理303響應(yīng)時(shí)應(yīng)當(dāng)做的。
304 Not Modified
表示資源未被修改,因?yàn)檎?qǐng)求頭指定的版本If-Modified-Since或If-None-Match。在這種情況下,由于客戶端仍然具有以前下載的副本,因此不需要重新傳輸資源。
305 Use Proxy
被請(qǐng)求的資源必須通過指定的代理才能被訪問。Location域中將給出指定的代理所在的URI信息,接收者需要重復(fù)發(fā)送一個(gè)單獨(dú)的請(qǐng)求,通過這個(gè)代理才能訪問相應(yīng)資源。只有原始服務(wù)器才能創(chuàng)建305響應(yīng)。許多HTTP客戶端(像是Mozilla[25]和Internet Explorer)都沒有正確處理這種狀態(tài)代碼的響應(yīng),主要是出于安全考慮。
注意:RFC 2068中沒有明確305響應(yīng)是為了重定向一個(gè)單獨(dú)的請(qǐng)求,而且只能被原始服務(wù)器建立。忽視這些限制可能導(dǎo)致嚴(yán)重的安全后果。
306 Switch Proxy
在最新版的規(guī)范中,306狀態(tài)碼已經(jīng)不再被使用。最初是指“后續(xù)請(qǐng)求應(yīng)使用指定的代理”。
307 Temporary Redirect
在這種情況下,請(qǐng)求應(yīng)該與另一個(gè)URI重復(fù),但后續(xù)的請(qǐng)求應(yīng)仍使用原始的URI。 與302相反,當(dāng)重新發(fā)出原始請(qǐng)求時(shí),不允許更改請(qǐng)求方法。 例如,應(yīng)該使用另一個(gè)POST請(qǐng)求來重復(fù)POST請(qǐng)求。[28]
308 Permanent Redirect (RFC 7538)
請(qǐng)求和所有將來的請(qǐng)求應(yīng)該使用另一個(gè)URI重復(fù)。 307和308重復(fù)302和301的行為,但不允許HTTP方法更改。 例如,將表單提交給永久重定向的資源可能會(huì)順利進(jìn)行。
4xx客戶端錯(cuò)誤
這類的狀態(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
由于明顯的客戶端錯(cuò)誤(例如,格式錯(cuò)誤的請(qǐng)求語法,太大的大小,無效的請(qǐng)求消息或欺騙性路由請(qǐng)求),服務(wù)器不能或不會(huì)處理該請(qǐng)求。
401 Unauthorized(RFC 7235)
參見:HTTP基本認(rèn)證、HTTP摘要認(rèn)證
類似于403 Forbidden,401語義即“未認(rèn)證”,即用戶沒有必要的憑據(jù)。該狀態(tài)碼表示當(dāng)前請(qǐng)求需要用戶驗(yàn)證。該響應(yīng)必須包含一個(gè)適用于被請(qǐng)求資源的WWW-Authenticate信息頭用以詢問用戶信息。客戶端可以重復(fù)提交一個(gè)包含恰當(dāng)?shù)腁uthorization頭信息的請(qǐng)求。[33]如果當(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)診斷信息。
注意:當(dāng)網(wǎng)站(通常是網(wǎng)站域名)禁止IP地址時(shí),有些網(wǎng)站狀態(tài)碼顯示的401,表示該特定地址被拒絕訪問網(wǎng)站。
402 Payment Required
該狀態(tài)碼是為了將來可能的需求而預(yù)留的。該狀態(tài)碼最初的意圖可能被用作某種形式的數(shù)字現(xiàn)金或在線支付方案的一部分,但幾乎沒有哪家服務(wù)商使用,而且這個(gè)狀態(tài)碼通常不被使用。如果特定開發(fā)人員已超過請(qǐng)求的每日限制,Google Developers API會(huì)使用此狀態(tài)碼。
403 Forbidden
主條目:HTTP 403
服務(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
主條目:HTTP 404
請(qǐng)求失敗,請(qǐng)求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn),但允許用戶的后續(xù)請(qǐng)求。沒有信息能夠告訴用戶這個(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)可用的情況下。
405 Method Not Allowed
請(qǐng)求行中指定的請(qǐng)求方法不能被用于請(qǐng)求相應(yīng)的資源。該響應(yīng)必須返回一個(gè)Allow頭信息用以表示出當(dāng)前資源能夠接受的請(qǐng)求方法的列表。例如,需要通過POST呈現(xiàn)數(shù)據(jù)的表單上的GET請(qǐng)求,或只讀資源上的PUT請(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
參見:內(nèi)容協(xié)商
請(qǐng)求的資源的內(nèi)容特性無法滿足請(qǐng)求頭中的條件,因而無法生成響應(yīng)實(shí)體,該請(qǐng)求不可接受。
除非這是一個(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(RFC 2617)
與401響應(yīng)類似,只不過客戶端必須在代理服務(wù)器上進(jìn)行身份驗(yàn)證。[37]代理服務(wù)器必須返回一個(gè)Proxy-Authenticate用以進(jìn)行身份詢問??蛻舳丝梢苑祷匾粋€(gè)Proxy-Authorization信息頭用以驗(yàn)證。
408 Request Timeout
請(qǐng)求超時(shí)。根據(jù)HTTP規(guī)范,客戶端沒有在服務(wù)器預(yù)備等待的時(shí)間內(nèi)完成一個(gè)請(qǐng)求的發(fā)送,客戶端可以隨時(shí)再次提交這一請(qǐng)求而無需進(jìn)行任何更改。
409 Conflict
表示因?yàn)檎?qǐng)求存在沖突無法處理該請(qǐng)求,例如多個(gè)同步更新之間的編輯沖突。
410 Gone
表示所請(qǐng)求的資源不再可用,將不再可用。當(dāng)資源被有意地刪除并且資源應(yīng)被清除時(shí),應(yīng)該使用這個(gè)。在收到410狀態(tài)碼后,用戶應(yīng)停止再次請(qǐng)求資源。但大多數(shù)服務(wù)端不會(huì)使用此狀態(tài)碼,而是直接使用404狀態(tài)碼。
411 Length Required
服務(wù)器拒絕在沒有定義Content-Length頭的情況下接受請(qǐng)求。在添加了表明請(qǐng)求消息體長(zhǎng)度的有效Content-Length頭之后,客戶端可以再次提交該請(qǐng)求。
412 Precondition Failed(RFC 7232)
服務(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(RFC 7231)
前稱“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(RFC 7231)
前稱“Request-URI Too Long”,[43]表示請(qǐng)求的URI長(zhǎng)度超過了服務(wù)器能夠解釋的長(zhǎng)度,因此服務(wù)器拒絕對(duì)該請(qǐng)求提供服務(wù)。通常將太多數(shù)據(jù)的結(jié)果編碼為GET請(qǐng)求的查詢字符串,在這種情況下,應(yīng)將其轉(zhuǎn)換為POST請(qǐng)求。[44]這比較少見,通常的情況包括:
本應(yīng)使用POST方法的表單提交變成了GET方法,導(dǎo)致查詢字符串過長(zhǎng)。
重定向URI“黑洞”,例如每次重定向把舊的URI作為新的URI的一部分,導(dǎo)致在若干次重定向后URI超長(zhǎng)。
客戶端正在嘗試?yán)媚承┓?wù)器中存在的安全漏洞攻擊服務(wù)器。這類服務(wù)器使用固定長(zhǎng)度的緩沖讀取或操作請(qǐng)求的URI,當(dāng)GET后的參數(shù)超過某個(gè)數(shù)值后,可能會(huì)產(chǎn)生緩沖區(qū)溢出,導(dǎo)致任意代碼被執(zhí)行[45]。沒有此類漏洞的服務(wù)器,應(yīng)當(dāng)返回414狀態(tài)碼。
415 Unsupported Media Type
對(duì)于當(dāng)前請(qǐng)求的方法和所請(qǐng)求的資源,請(qǐng)求中提交的互聯(lián)網(wǎng)媒體類型并不是服務(wù)器中所支持的格式,因此請(qǐng)求被拒絕。例如,客戶端將圖像上傳格式為svg,但服務(wù)器要求圖像使用上傳格式為jpg。
416 Requested Range Not Satisfiable(RFC 7233)
前稱“Requested Range Not Satisfiable”。[46]客戶端已經(jīng)要求文件的一部分(Byte serving),但服務(wù)器不能提供該部分。例如,如果客戶端要求文件的一部分超出文件尾端。
417 Expectation Failed
在請(qǐng)求頭Expect中指定的預(yù)期內(nèi)容無法被服務(wù)器滿足,或者這個(gè)服務(wù)器是一個(gè)代理服顯的證據(jù)證明在當(dāng)前路由的下一個(gè)節(jié)點(diǎn)上,Expect的內(nèi)容無法被滿足。
418 I’m a teapot(RFC 2324)
本操作碼是在1998年作為IETF的傳統(tǒng)愚人節(jié)笑話, 在RFC 2324超文本咖啡壺控制協(xié)議’中定義的,并不需要在真實(shí)的HTTP服務(wù)器中定義。當(dāng)一個(gè)控制茶壺的HTCPCP收到BREW或POST指令要求其煮咖啡時(shí)應(yīng)當(dāng)回傳此錯(cuò)誤。[49]這個(gè)HTTP狀態(tài)碼在某些網(wǎng)站(包括Google.com)與項(xiàng)目(如Node.js、ASP.NET和Go語言)中用作彩蛋。
420 Enhance Your Caim
Twitter Search與Trends API在客戶端被限速的情況下返回。
421 Misdirected Request (RFC 7540)
該請(qǐng)求針對(duì)的是無法產(chǎn)生響應(yīng)的服務(wù)器(例如因?yàn)檫B接重用)。
422 Unprocessable Entity(WebDAV;RFC 4918 )
請(qǐng)求格式正確,但是由于含有語義錯(cuò)誤,無法響應(yīng)。
423 Locked(WebDAV;RFC 4918)
當(dāng)前資源被鎖定。[15]
424 Failed Dependency(WebDAV;RFC 4918)
由于之前的某個(gè)請(qǐng)求發(fā)生的錯(cuò)誤,導(dǎo)致當(dāng)前請(qǐng)求失敗,例如PROPPATCH。
425 Unordered Collection
在WebDAV Advanced Collections Protocol中定義,但Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol中并不存在。
426 Upgrade Required(RFC 2817)
客戶端應(yīng)當(dāng)切換到TLS/1.0,并在HTTP/1.1 Upgrade header中給出。
428 Precondition Required (RFC 6585)
原服務(wù)器要求該請(qǐng)求滿足一定條件。這是為了防止“‘未更新’問題,即客戶端讀?。℅ET)一個(gè)資源的狀態(tài),更改它,并將它寫(PUT)回服務(wù)器,但這期間第三方已經(jīng)在服務(wù)器上更改了該資源的狀態(tài),因此導(dǎo)致了沖突?!?/p>
429 Too Many Requests (RFC 6585)
用戶在給定的時(shí)間內(nèi)發(fā)送了太多的請(qǐng)求。旨在用于網(wǎng)絡(luò)限速。
431 Request Header Fields Too Large (RFC 6585)
服務(wù)器不愿處理請(qǐng)求,因?yàn)橐粋€(gè)或多個(gè)頭字段過大。
444 No Response
Nginx上HTTP服務(wù)器擴(kuò)展。服務(wù)器不向客戶端返回任何信息,并關(guān)閉連接(有助于阻止惡意軟件)。
450 Blocked by Windows Parental Controls
這是一個(gè)由Windows家庭控制(Microsoft)HTTP阻止的450狀態(tài)代碼的示例,用于信息和測(cè)試。
451 Unavailable For Legal Reasons
主條目:HTTP 451
該訪問因法律的要求而被拒絕,由IETF在2015核準(zhǔn)后新增加。
494 Request Header Too Large
在錯(cuò)誤代碼431提出之前Nginx上使用的擴(kuò)展HTTP代碼。
5xx服務(wù)器錯(cuò)誤
表示服務(wù)器無法完成明顯有效的請(qǐng)求。[56]這類狀態(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
通用錯(cuò)誤消息,服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況,導(dǎo)致了它無法完成對(duì)請(qǐng)求的處理。沒有給出具體錯(cuò)誤信息。
501 Not Implemented
服務(wù)器不支持當(dāng)前請(qǐng)求所需要的某個(gè)功能。當(dāng)服務(wù)器無法識(shí)別請(qǐng)求的方法,并且無法支持其對(duì)任何資源的請(qǐng)求。(例如,網(wǎng)絡(luò)服務(wù)API的新功能)
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)的方式處理它。
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(RFC 2295)
由《透明內(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(WebDAV;RFC 4918)
服務(wù)器無法存儲(chǔ)完成請(qǐng)求所必須的內(nèi)容。這個(gè)狀況被認(rèn)為是臨時(shí)的。
508 Loop Detected (WebDAV;RFC 5842)
服務(wù)器在處理請(qǐng)求時(shí)陷入死循環(huán)。 (可代替 208狀態(tài)碼)
510 Not Extended(RFC 2774)
獲取資源所需要的策略并沒有被滿足。
511 Network Authentication Required (RFC 6585)
客戶端需要進(jìn)行身份驗(yàn)證才能獲得網(wǎng)絡(luò)訪問權(quán)限,旨在限制用戶群訪問特定網(wǎng)絡(luò)。(例如連接WiFi熱點(diǎn)時(shí)的強(qiáng)制網(wǎng)絡(luò)門戶)

