HTTP狀態(tài)碼(HTTP狀態(tài)碼)是一種三位數(shù)字代碼,用于表示W(wǎng)eb服務(wù)器的HTTP響應(yīng)狀態(tài)。它由rfc2616規(guī)范定義,并由rfc2518、rfc2817、rfc2295、rfc2774、rfc4918等擴展。所有狀態(tài)代碼的第一個數(shù)字表示響應(yīng)的五種狀態(tài)之一。消息(1個字)(臨時響應(yīng))是一個狀態(tài)代碼,表示請求已被接受,需要進一步處理。這種類型的響應(yīng)是一個臨時響應(yīng),它只包含狀態(tài)行和一些可選的響應(yīng)頭信息,并以空行結(jié)尾。
由于HTTP/1.0協(xié)議中沒有定義1XX狀態(tài)代碼,因此服務(wù)器禁止向此類客戶機發(fā)送1XX響應(yīng),除非在某些實驗條件下。100Continue客戶端應(yīng)繼續(xù)發(fā)送請求。此臨時響應(yīng)用于通知客戶機其某些請求已被服務(wù)器接收,但尚未被拒絕。
客戶機應(yīng)該繼續(xù)發(fā)送其余的請求,或者在請求完成后忽略響應(yīng)。請求完成后,服務(wù)器必須向客戶端發(fā)送最終響應(yīng)。101交換協(xié)議服務(wù)器已經(jīng)了解客戶端的請求,并將通過升級頭通知客戶端使用不同的協(xié)議來完成請求。
在發(fā)送響應(yīng)的最后一行空白之后,服務(wù)器將切換到升級頭中定義的協(xié)議。只有在切換新協(xié)議更有益時,才應(yīng)采取類似措施。例如,切換到新的HTTP版本比舊版本更有利,或者切換到實時和同步的協(xié)議來傳輸利用這些特性的資源。
102處理是WebDAV(RFC2518)擴展的狀態(tài)代碼,表示處理將繼續(xù)。成功(2字)(success)是一種狀態(tài)代碼,表示服務(wù)器已成功接收、理解和接受請求。200OK請求已成功,請求的所需響應(yīng)頭或數(shù)據(jù)體將隨響應(yīng)一起返回。已經(jīng)實現(xiàn)了201created請求,并根據(jù)請求的要求創(chuàng)建了一個新的資源,其uri已返回位置頭信息。
如果不能及時建立所需資源,應(yīng)將其返回至“202接受”。202接受的服務(wù)器已接受該請求,但尚未對其進行處理。正如可能被拒絕一樣,請求最終可能會被執(zhí)行,也可能不會被執(zhí)行。在異步操作的情況下,沒有更方便的方法發(fā)送此狀態(tài)代碼。
返回202狀態(tài)代碼響應(yīng)的目的是允許服務(wù)器接受來自其他進程的請求(例如,每天只執(zhí)行一次的基于批處理的操作),而不必讓客戶機一直連接到服務(wù)器,直到批處理操作完成。接收請求處理并返回202狀態(tài)代碼的響應(yīng)應(yīng)包含一些指示返回實體中處理的當前狀態(tài)的信息,以及指向處理狀態(tài)監(jiān)視器或狀態(tài)預(yù)測的指針,以便用戶可以估計操作是否已完成。
203非權(quán)威信息服務(wù)器已成功處理該請求,但返回的實體頭元信息不是原始服務(wù)器上的有效確定集,而是本地或第三方的副本。當前信息可以是原始版本的子集或超集。例如,包含資源的元數(shù)據(jù)可能會導(dǎo)致原始服務(wù)器知道元信息super。不需要使用此狀態(tài)代碼,僅當響應(yīng)返回200OK而不使用此狀態(tài)代碼時才適用。
204NoContent服務(wù)器成功處理了請求,但不需要返回任何實體內(nèi)容,并且希望返回更新的元信息。響應(yīng)可能以實體頭的形式返回新的或更新的元信息。如果存在這樣的頭信息,它應(yīng)該對應(yīng)于請求的變量。如果客戶機是瀏覽器,則用戶瀏覽器應(yīng)保留發(fā)送請求的頁面,而不更改文檔視圖,即使根據(jù)規(guī)范的新的或更新的元信息應(yīng)應(yīng)用于用戶瀏覽器活動視圖中的文檔。
因為204響應(yīng)被禁止包含任何消息體,所以它總是以消息頭后面的第一個空行結(jié)束。205ResetContent服務(wù)器成功地處理了請求,但沒有返回任何內(nèi)容。但是,與2004年的響應(yīng)不同,返回此狀態(tài)代碼的響應(yīng)要求請求者重置文檔視圖。此響應(yīng)主要用于在接收到用戶輸入后立即重置表單,以便用戶可以輕松地啟動另一個輸入。與2004年的響應(yīng)一樣,該響應(yīng)也被禁止包含任何消息體,并以消息頭后面的第一行空白結(jié)束。
206部分內(nèi)容服務(wù)器已成功處理了一些GET請求。像flashget或thunderbolt這樣的HTTP下載工具使用這些響應(yīng)來實現(xiàn)斷點延續(xù),或者將一個大文檔分解為多個下載段以便同時下載。請求必須包含指示客戶端所需內(nèi)容范圍的范圍頭信息,并且可以包含作為請求條件的if-range。響應(yīng)必須包含以下標題字段:內(nèi)容范圍用于指示此響應(yīng)中返回的內(nèi)容的范圍;
如果內(nèi)容類型是多部分/字節(jié)部分多部分下載,則每個多部分段落都應(yīng)包含內(nèi)容范圍字段,以指示此段落的內(nèi)容范圍。如果響應(yīng)包含內(nèi)容長度,則其值必須與返回的內(nèi)容范圍的真實字節(jié)數(shù)匹配。日期標記和/或內(nèi)容位置,如果相同的請求應(yīng)該返回200個響應(yīng)。
expires、cachecontrol和/或vary,前提是它們的值可能與之前相同變量的其他響應(yīng)對應(yīng)的值不同。