2008年11月16日 星期日

網頁伺服器狀態代碼 (Status Code Definitions)

  • 消息1xx(Informational 1xx)
該類狀態代碼用於表示臨時回應。臨時回應由狀態行(Status-Line)及可選標題組成, 由空行終止。HTTP/1.0中沒有定義任何1xx的狀態代碼,所以它們不是對HTTP/1.0請求的合法回應。實際上,它們主要用於實驗用途,這已經超出本我的文件的範圍。

  • 成功2xx(Successful 2xx)
表示客戶端請求被成功接收、理解、接受。

200 OK
請求成功。回應的信息依賴於請求所使用的方法,如下:
GET 要請求的資源已經放在回應的實體中了。
HEAD 沒有實體主體,回應中只包括標題信息。
POST 實體(描述或包含操作的結果)。

201 Created
請求完成,結果是新增了新資源。新新增資源的URI可在回應的實體中得到。原始伺服器應在發出該狀態代碼前新增該資源。
如果該操作不能立即完成,伺服器必須在該資源可用時在回應主體中給出提示,否則,伺服器端應回應202(可被接受)。
在本文定義的方法,只有POST可以新增資源。

202 Accepted
請求被接受,但處理尚未完成。請求可能不一定會最終完成,有可能被處理過程隨時中斷,在這種情況下,沒有辦法在異步操作中重新發送狀態代碼。
202回應是沒有義務的,這樣做的目的是允許伺服器不必等到用戶代理和伺服器間的連接結束,就可以響應其它過程的請求(象每天執行一次的,基於批次處理的過程)。
在某些回應中返回的實體中包括當前請求的狀態指示、狀態監視器指針或用戶對請求能否實現的評估信息。

204 No Content
伺服器端已經實現了請求,但是沒有返回新的信息。如果客戶是用戶代理,則勿需為此更新自身的我的文件視圖。該回應主要是為了在不影響用戶代理啟動我的文件視圖的前提下,進行script語句的輸入及其它操作。該回應還可能包括新的、以實體標題形式表示的元信息,它可被當前用戶代理啟動視圖中的我的文件所使用。

  • 重定向(Redirection 3xx)
該類狀態碼表示用戶代理要想完成請求,還需要發出進一步的操作。這些操作只有當後跟的請求是GET或HEAD時,才可由用戶代理來實現,而不用與用戶進行交互。用戶代理永遠也不要對請求進行5次以上的重定向操作,這樣可能導致無限循環。

300 Multiple Choices
該狀態碼不被HTTP/1.0的應用程式直接使用,只是做為3xx類型回應的缺省解釋。存在多個可用的被請求資源。
除非是HEAD請求,否則回應的實體中必須包括這些資源的字串列表及位置信息,由用戶或用戶代理來決定哪個是最適合的。
如果伺服器有首選,它應將對應的URL信息存放在位置域(Location field)處,用戶代理會根據此域的值來實現自動的重定向。

301 Moved Permanently
請求到的資源都會分配一個永久的URL,這樣就可以在將來通過該URL來訪問此資源。有編輯連接功能的客戶端會盡可能地根據伺服器端傳回的新連接而自動更新請求URI。 新的URL必須由回應中的位置域指定。除非是HEAD請求,否則回應的實體主體(Entity-Body)必須包括對新URL超連接的簡要描述。
如果用POST方法發出請求,而接收到301回應狀態碼。在這種情況下,除非用戶確認,否則用戶代理不必自動重定向請求,因為這將導致改變已發出請求的環境。
注意:當在接收到301狀態碼後而自動重定向POST請求時,一些現存的用戶代理會錯誤地將其改為GET請求。

302 Moved Temporarily
請求到的資源在一個不同的URL處臨時儲存。因為重定向有時會被更改,客戶端應繼續用請求URI來發出以後的請求。新的URL必須由回應中的位置域指定。除非是HEAD請求,否則回應的實體主體 (Entity-Body)必須包括對新URL超連接的簡要描述。
如果用POST方法發出請求,而接收到302回應狀態碼。在這種情況下,除非用戶確認,否則用戶代理不必自動重定向請求,因為這將導致改變已發出請求的環境。
注意:當在接收到302狀態碼後而自動重定向POST請求時,一些現存的用戶代理會錯誤地將其改為GET請求。

304 Not Modified
如果客戶端成功執行了條件GET請求,而對應文件自If-Modified-Since域所指定的日期以來就沒有更新過,伺服器應當回應此狀
態碼,而不是將實體主體發送給客戶端。回應標題域中只應包括一些相關信息,比如快取管理器、與實體最近更新(entity's Last-Modified)日期無關的修改。相關標題域的例子有:日期、伺服器、過期時間。每當304回應中給出的域值發生變化,快取都應當對快取的實體進行更新。

  • 客戶端錯誤(Client Error )4xx
4xx類的狀態碼表示客戶端發生錯誤。如果客戶端在收到4xx代碼時請求還沒有完成,它應當立即終止向伺服器發送資料。除了回應HEAD請求外,不論錯誤是臨時的還是永久的,伺服器端都必須在回應的實體中包含錯誤狀態的解釋。這些狀態碼適用於任何請求方法。
注意:如果客戶端正在發送資料,伺服器端的TCP實現應當小心,以確保客戶端在關閉輸入連接之前收到回應包。如果客戶端在關閉後仍舊向伺服器發送資料,伺服器會給客戶  端發送一個復位包,清空客戶端尚未處理的輸入緩衝區,以終止HTTP應用程式的讀取、解釋活動。

400 非法請求(Bad Request)
如果請求的語法不對,伺服器將無法理解。客戶端在對該請求做出更改之前,不應再次向伺服器重複發送該請求。

401 未授權(Unauthorized)
請求需要用戶授權。回應中的WWW-Authenticate標題域(10.16節)應提示用戶以授權方式請求資源。客戶端應使用合適的授權標題域(10.2節)來重複該請求。如果請求中已經包括了授權信任信息,那回應的401表示此授權被拒絕。如果用戶代理在多次嘗試之後,回應一樣還是返回401狀態代碼,用戶應當察看一下回應的實體,因為在實體中會包括一些相關的動態信息。HTTP
訪問授權會在11節中解釋。

403 禁止(Forbidden)
伺服器理解請求,但是拒絕實現該請求。授權對此沒有幫助,客戶端應當停止重複發送此請求。如果不是用HEAD請求方法,


而且伺服器端願意公佈請求未被實現原因的前提下,伺服器會將拒絕原因寫在回應實體中。該狀態碼一般用於伺服器端不想公佈請求被拒絕的細節或沒有其它的回應可用。

404 沒有找到(Not Found)
伺服器沒有找到與請求URI相符的資源。404狀態碼並不指明狀況是臨時性的還是永久性的。如果伺服器不希望為客戶端提供這方面的信息,還回應403(禁止)狀態碼。

  • 伺服器錯誤(Server Error )5xx
回應代碼以『5』開頭的狀態碼表示伺服器端發現自己出現錯誤,不能繼續執行請求。如果客戶端在收到5xx狀態碼時,請求尚未完成,它應當立即停止向伺服器發送資料。除了回應HEAD請求外,伺服器應當在其回應實體中包括對錯誤情況的解釋、並指明是臨時性的還永久性的。
這類回應代碼沒有標題域,可適用於任何請求方法。

500 伺服器內部錯誤(Internal Server Error)
伺服器碰到了意外情況,使其無法繼續回應請求。

501 未實現(Not Implemented)
伺服器無法提供對請求中所要求功能的支持。如果伺服器無法識別請求方法就會回應此狀態代碼,這意味著不能回應請求所要求的任何資源。

502 非法網關(Bad Gateway)
充當網關或代理的伺服器從要發送請求的上游(upstream)伺服器收到非法的回應。

503 服務不可用(Service Unavailable)
伺服器當前無法處理請求。這一般是由於伺服器臨時性超載或維護引起的。該狀態碼暗示情況是暫時性的,要產生一些延遲。

注意:503狀態碼並沒有暗示伺服器在超載時一定要返回此狀態碼。一些伺服器可能希望在超載時採用簡單處理,即斷掉連接。

資料來源:From other website.

0 意見: