HTTP協議——處理狀態和返回狀態碼含義

HTTP協議——處理狀態和返回狀態碼含義

 
 

HTTP 處理狀態。當一個XMLHttpRequest初次創建時,這個屬性(readystate)的值從0開始,直到接收到完整的HTTP響應,這個值增加到 4。

5個狀態中每一個都有一個相關聯的非正式的名稱,下表列出了狀態、名稱和含義:

 

狀態 名稱 描述
0 Uninitialized 初始化狀態。XMLHttpRequest對象已創建或已被abort()方法重置。
1 Open open()方法已調用,但是send()方法未調用。請求還沒有被髮送。
2 Sent send()方法已調用,HTTP請求已發送到Web服務器。未接收到響應。
3 Receiving 所有響應頭部都已經接收到。響應體開始接收但未完成。
4 Loaded HTTP響應已經完全接收。

處理響應完成後,無論成功還是失敗都會返回一個狀態碼,用來表示服務器處理請求的結果,因此在響應處理函數中,在判斷完成HTTP請求的處理狀態後,還需根據返回的狀態碼做相應的處理。

HTTP的狀態碼及其含義:

1xx——信息提示

這些狀態代碼表示臨時的響應。客戶端在收到常規響應之前,應準備接收一個或多個 1xx 響應。

• 100——Continue 初始的請求已經接受,客戶應當繼續發送請求的其餘部分。(HTTP 1.1新)

• 101——Switching Protocols 服務器將遵從客戶的請求轉換到另外一種協議。(HTTP 1.1新)

 

2xx——成功

這類狀態代碼表明服務器成功地接受了客戶端請求。

• 200——OK 一切正常,對GET和POST請求的應答文檔跟在後面。

• 201——Created 服務器已經創建了文檔,Location頭給出了它的URL。

• 202——Accepted 已經接受請求,但處理尚未完成。

• 203——Non-Authoritative Information 文檔已經正常地返回,但一些應答頭可能不正確,因爲使用的是文檔的拷貝,非權威性信息(HTTP 1.1新)。

• 204——No Content  沒有新文檔,瀏覽器應該繼續顯示原來的文檔。如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個狀態代碼是很有用的。

• 205——Reset Content  沒有新的內容,但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容(HTTP 1.1新)。

• 206——Partial Content  客戶發送了一個帶有Range頭的GET請求,服務器完成了它(HTTP 1.1新)。

3xx——重定向

客戶端瀏覽器必須採取更多操作來實現請求。例如,瀏覽器可能不得不請求服務器上的不同的頁面,或通過代理服務器重複該請求。

• 300——Multiple Choices  客戶請求的文檔可以在多個位置找到,這些位置已經在返回的文檔內列出。如果服務器要提出優先選擇,則應該在Location應答頭指明。

• 301——Moved Permanently  客戶請求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應該自動地訪問新的URL。

• 302——Found  類似於301,但新的URL應該被視爲臨時性的替代,而不是永久性的。注意,在HTTP 1.0中對應的狀態信息是“Moved Temporatily”。出現該狀態代碼時,瀏覽器能夠自動訪問新的URL,因此它是一個很有用的狀態代碼。注意這個狀態代碼有時候可以和301替換使用。例如,如果瀏覽器錯誤地請求http://host/~user(缺少了後面的斜槓),有的服務器返回301,有的則返回302。嚴格地說,我們只能假定只有當原來的請求是GET時瀏覽器纔會自動重定向。請參見307。

• 303——See Other  類似於301/302,不同之處在於,如果原來的請求是POST,Location頭指定的重定向目標文檔應該通過GET提取(HTTP 1.1新)。

• 304——Not Modified  客戶端有緩衝的文檔併發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩衝的文檔還可以繼續使用。

• 305——Use Proxy  客戶請求的文檔應該通過Location頭所指明的代理服務器提取(HTTP 1.1新)。

• 307——Temporary Redirect  和302(Found)相同。許多瀏覽器會錯誤地響應302應答進行重定向,即使原來的請求是POST,即使它實際上只能在POST請求的應答是303時才能重定向。由於這個原因,HTTP 1.1新增了307,以便更加清楚地區分幾個狀態代碼:當出現303應答時,瀏覽器可以跟隨重定向的GET和POST請求;如果是307應答,則瀏覽器只能跟隨對GET請求的重定向。(HTTP 1.1新)

 

4xx——客戶端錯誤

發生錯誤,客戶端似乎有問題。例如,客戶端請求不存在的頁面,客戶端未提供有效的身份驗證信息。

• 400——Bad Request  請求出現語法錯誤。

• 401——Unauthorized  訪問被拒絕,客戶試圖未經授權訪問受密碼保護的頁面。應答中會包含一個WWW-Authenticate頭,瀏覽器據此顯示用戶名字/密碼對話框,然後在填寫合適的Authorization頭後再次發出請求。IIS定義了許多不同的401錯誤,它們指明更爲具體的錯誤原因。這些具體的錯誤代碼在瀏覽器中顯示,但不在IIS日誌中顯示:

• • 401.1——登錄失敗。

• • 401.2——服務器配置導致登錄失敗。

• • 401.3——由於ACL對資源的限制而未獲得授權。

• • 401.4——篩選器授權失敗。

• • 401.5——ISAPI/CGI應用程序授權失敗。

• • 401.7——訪問被Web服務器上的URL授權策略拒絕。這個錯誤代碼爲IIS 6.0 所專用。

• 402——Payment Required  保留有效的ChangeTo頭響應。

• 403——Forbidden  資源不可用。服務器理解客戶的請求,但拒絕處理它。通常由於服務器上文件或目錄的權限設置導致。禁止訪問:IIS 定義了許多不同的403錯誤,它們指明更爲具體的錯誤原因:

• • 403.1——執行訪問被禁止。

• • 403.2——讀訪問被禁止。

• • 403.3——寫訪問被禁止。

• • 403.4——要求SSL。

• • 403.5——要求SSL 128。

• • 403.6——IP 地址被拒絕。

• • 403.7——要求客戶端證書。

• • 403.8——站點訪問被拒絕。

• • 403.9——用戶數過多。

• • 403.10——配置無效。

• • 403.11——密碼更改。

• • 403.12——拒絕訪問映射表。

• • 403.13——客戶端證書被吊銷。

• • 403.14——拒絕目錄列表。

• • 403.15——超出客戶端訪問許可。

• • 403.16——客戶端證書不受信任或無效。

• • 403.17——客戶端證書已過期或尚未生效。

• • 403.18——在當前的應用程序池中不能執行所請求的URL。這個錯誤代碼爲IIS 6.0所專用。

• • 403.19——不能爲這個應用程序池中的客戶端執行CGI。這個錯誤代碼爲IIS 6.0所專用。

• • 403.20——Passport  登錄失敗。這個錯誤代碼爲IIS 6.0所專用。

• 404——Not Found  無法找到指定位置的資源。這也是一個常用的應答。

• • 404.0——(無)——沒有找到文件或目錄。

• • 404.1——無法在所請求的端口上訪問Web站點。

• • 404.2——Web 服務擴展鎖定策略阻止本請求。

• • 404.3——MIME 映射策略阻止本請求。

• 405——Method Not Allowed  請求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)對指定的資源不適用,用來訪問本頁面的HTTP 謂詞不被允許(方法不被允許)(HTTP 1.1新)

• 406——Not Acceptable  指定的資源已經找到,但它的MIME類型和客戶在Accept頭中所指定的不兼容,客戶端瀏覽器不接受所請求頁面的MIME類型(HTTP 1.1新)。

• 407——Proxy Authentication Required  要求進行代理身份驗證,類似於401,表示客戶必須先經過代理服務器的授權。(HTTP 1.1新)

• 408——Request Timeout  在服務器許可的等待時間內,客戶一直沒有發出任何請求。客戶可以在以後重複同一請求。(HTTP 1.1新)

• 409——Conflict  通常和PUT請求有關。由於請求和資源的當前狀態相沖突,因此請求不能成功。(HTTP 1.1新)

• 410——Gone  所請求的文檔已經不再可用,而且服務器不知道應該重定向到哪一個地址。它和404的不同在於,返回407表示文檔永久地離開了指定的位置,而404表示由於未知的原因文檔不可用。(HTTP 1.1新)

• 411——Length Required  服務器不能處理請求,除非客戶發送一個Content-Length頭。(HTTP 1.1新)

• 412——Precondition Failed  請求頭中指定的一些前提條件失敗(HTTP 1.1新)。

• 413——Request Entity Too Large  目標文檔的大小超過服務器當前願意處理的大小。如果服務器認爲自己能夠稍後再處理該請求,則應該提供一個Retry-After頭(HTTP 1.1新)。

• 414——Request URI Too Long URI太長(HTTP 1.1新)。

• 415——不支持的媒體類型。

• 416——Requested Range Not Satisfiable  服務器不能滿足客戶在請求中指定的Range頭。(HTTP 1.1新)

• 417——執行失敗。

• 423——鎖定的錯誤。

 

5xx——服務器錯誤

服務器由於遇到錯誤而不能完成該請求。

• 500——Internal Server Error  服務器遇到了意料不到的情況,不能完成客戶的請求。

• • 500.12——應用程序正忙於在Web 服務器上重新啓動。

• • 500.13——Web 服務器太忙。

• • 500.15——不允許直接請求Global.asa。

• • 500.16——UNC 授權憑據不正確。這個錯誤代碼爲IIS 6.0所專用。

• • 500.18——URL 授權存儲不能打開。這個錯誤代碼爲IIS 6.0所專用。

• • 500.100——內部 ASP 錯誤。

• 501——Not Implemented  服務器不支持實現請求所需要的功能,頁眉值指定了未實現的配置。例如,客戶發出了一個服務器不支持的PUT請求。

• 502——Bad Gateway  服務器作爲網關或者代理時,爲了完成請求訪問下一個服務器,但該服務器返回了非法的應答。亦說Web 服務器用作網關或代理服務器時收到了無效響應。

• • 502.1——CGI 應用程序超時。

• • 502.2——CGI 應用程序出錯。

• 503——Service Unavailable  服務不可用,服務器由於維護或者負載過重未能應答。例如,Servlet可能在數據庫連接池已滿的情況下返回503.服務器返回503時可以提供一個Retry-After頭。這個錯誤代碼爲IIS 6.0所專用。

• 504——Gateway Timeout  網關超時,由作爲代理或網關的服務器使用,表示不能及時地從遠程服務器獲得應答。(HTTP 1.1新)

• 505——HTTP Version Not Supported  服務器不支持請求中所指明的HTTP版本。(HTTP 1.1新)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章