1. 程式人生 > >HTTP 響應狀態碼規範

HTTP 響應狀態碼規範

HTTP 響應狀態程式碼指示特定 HTTP 請求是否已成功完成。響應分為五類:資訊響應,成功響應,重定向,客戶端錯誤和伺服器錯誤。狀態程式碼由 section 10 of RFC 2616定義

一、資訊響應

提示資訊 - 表示請求已被成功接收,繼續處理

100 Continue
這個臨時響應表明,迄今為止的所有內容都是可行的,客戶端應該繼續請求,如果已經完成,則忽略它。
101 Switching Protocol
該程式碼是響應客戶端的 Upgrade 標頭髮送的,並且指示伺服器也正在切換的協議。
102 Processing (WebDAV)
此程式碼表示伺服器已收到並正在處理該請求,但沒有響應可用。

二、成功響應

成功響應——表示請求已被成功接收

200 OK
請求成功。成功的含義取決於HTTP方法:

  • GET:資源已被提取並在訊息正文中傳輸。
  • HEAD:實體標頭位於訊息正文中。
  • POST:描述動作結果的資源在訊息體中傳輸。
  • TRACE:訊息正文包含伺服器收到的請求訊息。

201 Created
該請求已成功,並因此建立了一個新的資源。這通常是在PUT請求之後傳送的響應。
202 Accepted
請求已經接收到,但還未響應,沒有結果。意味著不會有一個非同步的響應去表明當前請求的結果,預期另外的程序和服務去處理請求,或者批處理。
203 Non-Authoritative Information


伺服器已成功處理了請求,但返回的實體頭部元資訊不是在原始伺服器上有效的確定集合,而是來自本地或者第三方的拷貝。當前的資訊可能是原始版本的子集或者超集。例如,包含資源的元資料可能導致原始伺服器知道元資訊的超集。使用此狀態碼不是必須的,而且只有在響應不使用此狀態碼便會返回200 OK的情況下才是合適的。
204 No Content
伺服器成功處理了請求,但不需要返回任何實體內容,並且希望返回更新了的元資訊。響應可能通過實體頭部的形式,返回新的或更新後的元資訊。如果存在這些頭部資訊,則應當與所請求的變數相呼應。如果客戶端是瀏覽器的話,那麼使用者瀏覽器應保留髮送了該請求的頁面,而不產生任何文件檢視上的變化,即使按照規範新的或更新後的元資訊應當被應用到使用者瀏覽器活動檢視中的文件。由於204響應被禁止包含任何訊息體,因此它始終以訊息頭後的第一個空行結尾。
205 Reset Content

伺服器成功處理了請求,且沒有返回任何內容。但是與204響應不同,返回此狀態碼的響應要求請求者重置文件檢視。該響應主要是被用於接受使用者輸入後,立即重置表單,以便使用者能夠輕鬆地開始另一次輸入。與204響應一樣,該響應也被禁止包含任何訊息體,且以訊息頭後的第一個空行結束。
206 Partial Content
伺服器已經成功處理了部分 GET 請求。類似於 FlashGet 或者迅雷這類的 HTTP 下載工具都是使用此類響應實現斷點續傳或者將一個大文件分解為多個下載段同時下載。該請求必須包含 Range 頭資訊來指示客戶端希望得到的內容範圍,並且可能包含 If-Range 來作為請求條件。
207 Multi-Status (WebDAV)
由WebDAV(RFC 2518)擴充套件的狀態碼,代表之後的訊息體將是一個XML訊息,並且可能依照之前子請求數量的不同,包含一系列獨立的響應程式碼。
208 Multi-Status (WebDAV)
在 DAV 裡面使用: propstat 響應元素以避免重複列舉多個繫結的內部成員到同一個集合。
226 IM Used (HTTP Delta encoding)
伺服器已經完成了對資源的 GET 請求,並且響應是對當前例項應用的一個或多個例項操作結果的表示。

三、重定向

重定向——要完成請求必須進行更進一步的處理

300 Multiple Choice
被請求的資源有一系列可供選擇的回饋資訊,每個都有自己特定的地址和瀏覽器驅動的商議資訊。使用者或瀏覽器能夠自行選擇一個首選的地址進行重定向。
301 Moved Permanently
被請求的資源已永久移動到新位置,並且將來任何對此資源的引用都應該使用本響應返回的若干個 URI 之一。如果可能,擁有連結編輯功能的客戶端應當自動把請求的地址修改為從伺服器反饋回來的地址。除非額外指定,否則這個響應也是可快取的。
302 Found
請求的資源現在臨時從不同的 URI 響應請求。由於這樣的重定向是臨時的,客戶端應當繼續向原有地址傳送以後的請求。只有在Cache-Control或Expires中進行了指定的情況下,這個響應才是可快取的。
303 See Other
對應當前請求的響應可以在另一個 URI 上被找到,而且客戶端應當採用 GET 的方式訪問那個資源。這個方法的存在主要是為了允許由指令碼啟用的POST請求輸出重定向到一個新的資源。
304 Not Modified
如果客戶端傳送了一個帶條件的 GET 請求且該請求已被允許,而文件的內容(自上次訪問以來或者根據請求的條件)並沒有改變,則伺服器應當返回這個狀態碼。304 響應禁止包含訊息體,因此始終以訊息頭後的第一個空行結尾。
305 Use Proxy
被請求的資源必須通過指定的代理才能被訪問。Location 域中將給出指定的代理所在的 URI 資訊,接收者需要重複傳送一個單獨的請求,通過這個代理才能訪問相應資源。只有原始伺服器才能建立305響應。
306 unused
在最新版的規範中,306 狀態碼已經不再被使用。
307 Temporary Redirect
請求的資源現在臨時從不同的URI 響應請求。由於這樣的重定向是臨時的,客戶端應當繼續向原有地址傳送以後的請求。只有在Cache-Control或Expires中進行了指定的情況下,這個響應才是可快取的。
308 Permanent Redirect
這意味著資源現在永久位於由 Location: HTTP Response 標頭指定的另一個 URI。 這與 301 Moved Permanently HTTP 響應程式碼具有相同的語義,但使用者代理不能更改所使用的 HTTP 方法:如果在第一個請求中使用 POST,則必須在第二個請求中使用 POST。

四、客戶端響應

客戶端錯誤 - 請求有語法錯誤或請求無法實現

400 Bad Request
1、語義有誤,當前請求無法被伺服器理解。除非進行修改,否則客戶端不應該重複提交這個請求。
2、請求引數有誤。
401 Unauthorized
當前請求需要使用者驗證。該響應必須包含一個適用於被請求資源的 WWW-Authenticate 資訊頭用以詢問使用者資訊。客戶端可以重複提交一個包含恰當的 Authorization 頭資訊的請求。如果當前請求已經包含了 Authorization 證書,那麼401響應代表著伺服器驗證已經拒絕了那些證書。如果401響應包含了與前一個響應相同的身份驗證詢問,且瀏覽器已經至少嘗試了一次驗證,那麼瀏覽器應當向用戶展示響應中包含的實體資訊,因為這個實體資訊中可能包含了相關診斷資訊。
402 Payment Required
此響應碼保留以便將來使用,創造此響應碼的最初目的是用於數字支付系統,然而現在並未使用。
403 Forbidden
伺服器已經理解請求,但是拒絕執行它。與 401 響應不同的是,身份驗證並不能提供任何幫助,而且這個請求也不應該被重複提交。如果這不是一個 HEAD 請求,而且伺服器希望能夠講清楚為何請求不能被執行,那麼就應該在實體內描述拒絕的原因。當然伺服器也可以返回一個 404 響應,假如它不希望讓客戶端獲得任何資訊。
404 Not Found
請求失敗,請求所希望得到的資源未被在伺服器上發現。沒有資訊能夠告訴使用者這個狀況到底是暫時的還是永久的。假如伺服器知道情況的話,應當使用410狀態碼來告知舊資源因為某些內部的配置機制問題,已經永久的不可用,而且沒有任何可以跳轉的地址。404這個狀態碼被廣泛應用於當伺服器不想揭示到底為何請求被拒絕或者沒有其他適合的響應可用的情況下。
405 Method Not Allowed
請求行中指定的請求方法不能被用於請求相應的資源。該響應必須返回一個Allow 頭資訊用以表示出當前資源能夠接受的請求方法的列表。   鑑於 PUT,DELETE 方法會對伺服器上的資源進行寫操作,因而絕大部分的網頁伺服器都不支援或者在預設配置下不允許上述請求方法,對於此類請求均會返回405錯誤。
406 Not Acceptable
請求的資源的內容特性無法滿足請求頭中的條件,因而無法生成響應實體。
407 Proxy Authentication Required
與401響應類似,只不過客戶端必須在代理伺服器上進行身份驗證。代理伺服器必須返回一個 Proxy-Authenticate 用以進行身份詢問。客戶端可以返回一個 Proxy-Authorization 資訊頭用以驗證。
408 Request Timeout
請求超時。客戶端沒有在伺服器預備等待的時間內完成一個請求的傳送。客戶端可以隨時再次提交這一請求而無需進行任何更改。
409 Conflict
由於和被請求的資源的當前狀態之間存在衝突,請求無法完成。這個程式碼只允許用在這樣的情況下才能被使用:使用者被認為能夠解決衝突,並且會重新提交新的請求。該響應應當包含足夠的資訊以便使用者發現衝突的源頭。
410 Gone
被請求的資源在伺服器上已經不再可用,而且沒有任何已知的轉發地址。這樣的狀況應當被認為是永久性的。如果可能,擁有連結編輯功能的客戶端應當在獲得使用者許可後刪除所有指向這個地址的引用。如果伺服器不知道或者無法確定這個狀況是否是永久的,那麼就應該使用 404 狀態碼。除非額外說明,否則這個響應是可快取的。
411 Length Required
伺服器拒絕在沒有定義 Content-Length 頭的情況下接受請求。在添加了表明請求訊息體長度的有效 Content-Length 頭之後,客戶端可以再次提交該請求。
412 Precondition Failed
伺服器在驗證在請求的頭欄位中給出先決條件時,沒能滿足其中的一個或多個。這個狀態碼允許客戶端在獲取資源時在請求的元資訊(請求頭欄位資料)中設定先決條件,以此避免該請求方法被應用到其希望的內容以外的資源上。
413 Payload Too Large
伺服器拒絕處理當前請求,因為該請求提交的實體資料大小超過了伺服器願意或者能夠處理的範圍。此種情況下,伺服器可以關閉連線以免客戶端繼續傳送此請求。如果這個狀況是臨時的,伺服器應當返回一個 Retry-After 的響應頭,以告知客戶端可以在多少時間以後重新嘗試。
414 URI Too Long
請求的URI 長度超過了伺服器能夠解釋的長度,因此伺服器拒絕對該請求提供服務。這比較少見,通常的情況包括:本應使用POST方法的表單提交變成了GET方法,導致查詢字串(Query String)過長。
415 Unsupported Media Type
對於當前請求的方法和所請求的資源,請求中提交的實體並不是伺服器中所支援的格式,因此請求被拒絕。
416 Requested Range Not Satisfiable
如果請求中包含了 Range 請求頭,並且 Range 中指定的任何資料範圍都與當前資源的可用範圍不重合,同時請求中又沒有定義 If-Range 請求頭,那麼伺服器就應當返回416狀態碼。
417 Expectation Failed
此響應程式碼意味著伺服器無法滿足 期望 請求標頭欄位指示的期望值。
418 I’m a teapot
伺服器拒絕嘗試用 “茶壺沖泡咖啡”。
421 Misdirected Request
該請求針對的是無法產生響應的伺服器。 這可以由伺服器傳送,該伺服器未配置為針對包含在請求 URI 中的方案和許可權的組合產生響應。
422 Unprocessable Entity (WebDAV)
請求格式良好,但由於語義錯誤而無法遵循。
423 Locked (WebDAV)
正在訪問的資源被鎖定。
424 Failed Dependency (WebDAV)
由於先前的請求失敗,所以此次請求失敗。
426 Upgrade Required
伺服器拒絕使用當前協議執行請求,但可能在客戶機升級到其他協議後願意這樣做。 伺服器在 426 響應中傳送 Upgrade 頭以指示所需的協議。
428 Precondition Required
原始伺服器要求該請求是有條件的。 旨在防止“丟失更新”問題,即客戶端獲取資源狀態,修改該狀態並將其返回伺服器,同時第三方修改伺服器上的狀態,從而導致衝突。
429 Too Many Requests
使用者在給定的時間內傳送了太多請求(“限制請求速率”)。
431 Request Header Fields Too Large
伺服器不願意處理請求,因為它的 請求頭欄位太大( Request Header Fields Too Large)。 請求可以在減小請求頭欄位的大小後重新提交。
451 Unavailable For Legal Reasons
使用者請求非法資源,例如:由政府審查的網頁。

五、服務端響應

伺服器端錯誤 - 伺服器未能實現合法的請求

500 Internal Server Error
伺服器遇到了不知道如何處理的情況。
501 Not Implemented
此請求方法不被伺服器支援且無法被處理。只有GET和HEAD是要求伺服器支援的,它們必定不會返回此錯誤程式碼。
502 Bad Gateway
此錯誤響應表明伺服器作為閘道器需要得到一個處理這個請求的響應,但是得到一個錯誤的響應。
503 Service Unavailable
伺服器沒有準備好處理請求。 常見原因是伺服器因維護或過載而停機。 請注意,與此響應一起,應傳送解釋問題的使用者友好頁面。 這個響應應該用於臨時條件和 Retry-After:如果可能的話,HTTP頭應該包含恢復服務之前的估計時間。 網站管理員還必須注意與此響應一起傳送的與快取相關的標頭,因為這些臨時條件響應通常不應被快取。
504 Gateway Timeout
當伺服器作為閘道器,不能及時得到響應時返回此錯誤程式碼。
505 HTTP Version Not Supported
伺服器不支援請求中所使用的HTTP協議版本。
506 Variant Also Negotiates
伺服器有一個內部配置錯誤:對請求的透明內容協商導致迴圈引用。
507 Insufficient Storage
伺服器有內部配置錯誤:所選的變體資源被配置為參與透明內容協商本身,因此不**是協商過程中的適當端點。
508 Loop Detected (WebDAV)**
伺服器在處理請求時檢測到無限迴圈。
510 Not Extended
伺服器需要對請求進一步擴展才能實現它。
511 Network Authentication Required
511 狀態碼指示客戶端需要進行身份驗證才能獲得網路訪問許可權。