AJAX中請求遠端文件、或在檢測遠端文件是否掉鏈時(shí),都需要了解到遠端服務(wù)器反饋的狀態(tài)以確定文件的存在與否。
當然,在我們平常瀏覽網(wǎng)頁(yè)時(shí),也會(huì )發(fā)現一些文件不存在時(shí)顯示為“404錯誤”,這就是常見(jiàn)的Http請求狀態(tài)(status)
Web服務(wù)器響應瀏覽器或其他客戶(hù)程序的請求時(shí),其應答一般由以下幾個(gè)部分組成:一個(gè)狀態(tài)行,幾個(gè)應答頭,一個(gè)空行,內容文檔。下面是一個(gè)最簡(jiǎn)單的應答:
狀態(tài)行包含HTTP版本、狀態(tài)代碼、與狀態(tài)代碼對應的簡(jiǎn)短說(shuō)明信息。在大多數情況下,除了Content-Type之外的所有應答頭都是可選的。但Content-Type是必需的,它描述的是后面文檔的MIME類(lèi)型。雖然大多數應答都包含一個(gè)文檔,但也有一些不包含,例如對HEAD請求的應答永遠不會(huì )附帶文檔。有許多狀態(tài)代碼實(shí)際上用來(lái)標識一次失敗的請求,這些應答也不包含文檔(或只包含一個(gè)簡(jiǎn)短的錯誤信息說(shuō)明)。
當用戶(hù)試圖通過(guò) HTTP 訪(fǎng)問(wèn)一臺正在運行 Internet 信息服務(wù) (IIS) 的服務(wù)器上的內容時(shí),IIS 返回一個(gè)表示該請求的狀態(tài)的數字代碼。狀態(tài)代碼可以指明具體請求是否已成功,還可以揭示請求失敗的確切原因。
1xx - 信息提示這些狀態(tài)代碼表示臨時(shí)的響應??蛻?hù)端在收到常規響應之前,應準備接收一個(gè)或多個(gè) 1xx 響應。
· 100 - Continue 初始的請求已經(jīng)接受,客戶(hù)應當繼續發(fā)送請求的其余部分。(HTTP 1.1新)
· 101 - Switching Protocols 服務(wù)器將遵從客戶(hù)的請求轉換到另外一種協(xié)議(HTTP 1.1新)
2xx - 成功這類(lèi)狀態(tài)代碼表明服務(wù)器成功地接受了客戶(hù)端請求。
· 200 - OK 一切正常,對GET和POST請求的應答文檔跟在后面。
· 201 - Created 服務(wù)器已經(jīng)創(chuàng )建了文檔,Location頭給出了它的URL。
· 202 - Accepted 已經(jīng)接受請求,但處理尚未完成。
· 203 - Non-Authoritative Information 文檔已經(jīng)正常地返回,但一些應答頭可能不正確,因為使用的是文檔的拷貝,非權威性信息(HTTP 1.1新)。
· 204 - No Content 沒(méi)有新文檔,瀏覽器應該繼續顯示原來(lái)的文檔。如果用戶(hù)定期地刷新頁(yè)面,而Servlet可以確定用戶(hù)文檔足夠新,這個(gè)狀態(tài)代碼是很有用的。
· 205 - Reset Content 沒(méi)有新的內容,但瀏覽器應該重置它所顯示的內容。用來(lái)強制瀏覽器清除表單輸入內容(HTTP 1.1新)。
· 206 - Partial Content 客戶(hù)發(fā)送了一個(gè)帶有Range頭的GET請求,服務(wù)器完成了它(HTTP 1.1新)。
3xx - 重定向客戶(hù)端瀏覽器必須采取更多操作來(lái)實(shí)現請求。例如,瀏覽器可能不得不請求服務(wù)器上的不同的頁(yè)面,或通過(guò)代理服務(wù)器重復該請求。
· 300 - Multiple Choices 客戶(hù)請求的文檔可以在多個(gè)位置找到,這些位置已經(jīng)在返回的文檔內列出。如果服務(wù)器要提出優(yōu)先選擇,則應該在Location應答頭指明。
· 301 - Moved Permanently 客戶(hù)請求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應該自動(dòng)地訪(fǎng)問(wèn)新的URL。
· 302 - Found 類(lèi)似于301,但新的URL應該被視為臨時(shí)性的替代,而不是永久性的。注意,在HTTP1.0中對應的狀態(tài)信息是“Moved Temporatily”。出現該狀態(tài)代碼時(shí),瀏覽器能夠自動(dòng)訪(fǎng)問(wèn)新的URL,因此它是一個(gè)很有用的狀態(tài)代碼。注意這個(gè)狀態(tài)代碼有時(shí)候可以和301替換使用。例如,如果瀏覽器錯誤地請求
http://host/~user (缺少了后面的斜杠),有的服務(wù)器返回301,有的則返回302。嚴格地說(shuō),我們只能假定只有當原來(lái)的請求是GET時(shí)瀏覽器才會(huì )自動(dòng)重定向。請參見(jiàn)307。
· 303 - See Other 類(lèi)似于301/302,不同之處在于,如果原來(lái)的請求是POST,Location頭指定的重定向目標文檔應該通過(guò)GET提?。℉TTP 1.1新)。
· 304 - Not Modified 客戶(hù)端有緩沖的文檔并發(fā)出了一個(gè)條件性的請求(一般是提供If-Modified-Since頭表示客戶(hù)只想比指定日期更新的文檔)。服務(wù)器告訴客戶(hù),原來(lái)緩沖的文檔還可以繼續使用。
· 305 - Use Proxy 客戶(hù)請求的文檔應該通過(guò)Location頭所指明的代理服務(wù)器提?。℉TTP 1.1新)。
· 307 - Temporary Redirect 和302(Found)相同。許多瀏覽器會(huì )錯誤地響應302應答進(jìn)行重定向,即使原來(lái)的請求是POST,即使它實(shí)際上只能在POST請求的應答是303時(shí)才能重定向。由于這個(gè)原因,HTTP 1.1新增了307,以便更加清除地區分幾個(gè)狀態(tài)代碼:當出現303應答時(shí),瀏覽器可以跟隨重定向的GET和POST請求;如果是307應答,則瀏覽器只能跟隨對GET請求的重定向。(HTTP 1.1新)
4xx - 客戶(hù)端錯誤發(fā)生錯誤,客戶(hù)端似乎有問(wèn)題。例如,客戶(hù)端請求不存在的頁(yè)面,客戶(hù)端未提供有效的身份驗證信息。
· 400 - Bad Request 請求出現語(yǔ)法錯誤。
· 401 - Unauthorized 訪(fǎng)問(wèn)被拒絕,客戶(hù)試圖未經(jīng)授權訪(fǎng)問(wèn)受密碼保護的頁(yè)面。應答中會(huì )包含一個(gè)WWW-Authenticate頭,瀏覽器據此顯示用戶(hù)名字/密碼對話(huà)框,然后在填寫(xiě)合適的Authorization頭后再次發(fā)出請求。IIS 定義了許多不同的 401 錯誤,它們指明更為具體的錯誤原因。這些具體的錯誤代碼在瀏覽器中顯示,但不在 IIS 日志中顯示:
· 401.1 - 登錄失敗。
· 401.2 - 服務(wù)器配置導致登錄失敗。
· 401.3 - 由于 ACL 對資源的限制而未獲得授權。
· 401.4 - 篩選器授權失敗。
· 401.5 - ISAPI/CGI 應用程序授權失敗。
· 401.7 – 訪(fǎng)問(wèn)被 Web 服務(wù)器上的 URL 授權策略拒絕。這個(gè)錯誤代碼為 IIS 6.0 所專(zhuān)用。
· 403 - Forbidden 資源不可用。服務(wù)器理解客戶(hù)的請求,但拒絕處理它。通常由于服務(wù)器上文件或目錄的權限設置導致。禁止訪(fǎng)問(wèn):IIS 定義了許多不同的 403 錯誤,它們指明更為具體的錯誤原因:
· 403.1 - 執行訪(fǎng)問(wèn)被禁止。
· 403.2 - 讀訪(fǎng)問(wèn)被禁止。
· 403.3 - 寫(xiě)訪(fǎng)問(wèn)被禁止。
· 403.4 - 要求 SSL。
· 403.5 - 要求 SSL 128。
· 403.6 - IP 地址被拒絕。
· 403.7 - 要求客戶(hù)端證書(shū)。
· 403.8 - 站點(diǎn)訪(fǎng)問(wèn)被拒絕。
· 403.9 - 用戶(hù)數過(guò)多。
· 403.10 - 配置無(wú)效。
· 403.11 - 密碼更改。
· 403.12 - 拒絕訪(fǎng)問(wèn)映射表。
· 403.13 - 客戶(hù)端證書(shū)被吊銷(xiāo)。
· 403.14 - 拒絕目錄列表。
· 403.15 - 超出客戶(hù)端訪(fǎng)問(wèn)許可。
· 403.16 - 客戶(hù)端證書(shū)不受信任或無(wú)效。
· 403.17 - 客戶(hù)端證書(shū)已過(guò)期或尚未生效。
· 403.18 - 在當前的應用程序池中不能執行所請求的 URL。這個(gè)錯誤代碼為 IIS 6.0 所專(zhuān)用。
· 403.19 - 不能為這個(gè)應用程序池中的客戶(hù)端執行 CGI。這個(gè)錯誤代碼為 IIS 6.0 所專(zhuān)用。
· 403.20 - Passport 登錄失敗。這個(gè)錯誤代碼為 IIS 6.0 所專(zhuān)用。
· 404 - Not Found 無(wú)法找到指定位置的資源。這也是一個(gè)常用的應答。
· 404.0 -(無(wú)) – 沒(méi)有找到文件或目錄。
· 404.1 - 無(wú)法在所請求的端口上訪(fǎng)問(wèn) Web 站點(diǎn)。
· 404.2 - Web 服務(wù)擴展鎖定策略阻止本請求。
· 404.3 - MIME 映射策略阻止本請求。
· 405 - Method Not Allowed 請求方法(GET、POST、HEAD、Delete、PUT、TRACE等)對指定的資源不適用,用來(lái)訪(fǎng)問(wèn)本頁(yè)面的 HTTP 謂詞不被允許(方法不被允許)(HTTP 1.1新)
· 406 - Not Acceptable 指定的資源已經(jīng)找到,但它的MIME類(lèi)型和客戶(hù)在A(yíng)ccpet頭中所指定的不兼容,客戶(hù)端瀏覽器不接受所請求頁(yè)面的 MIME 類(lèi)型(HTTP 1.1新)。
· 407 - Proxy Authentication Required 要求進(jìn)行代理身份驗證,類(lèi)似于401,表示客戶(hù)必須先經(jīng)過(guò)代理服務(wù)器的授權。(HTTP 1.1新)
· 408 - Request Timeout 在服務(wù)器許可的等待時(shí)間內,客戶(hù)一直沒(méi)有發(fā)出任何請求??蛻?hù)可以在以后重復同一請求。(HTTP 1.1新)
· 409 - Conflict 通常和PUT請求有關(guān)。由于請求和資源的當前狀態(tài)相沖突,因此請求不能成功。(HTTP 1.1新)
· 410 - Gone 所請求的文檔已經(jīng)不再可用,而且服務(wù)器不知道應該重定向到哪一個(gè)地址。它和404的不同在于,返回407表示文檔永久地離開(kāi)了指定的位置,而404表示由于未知的原因文檔不可用。(HTTP 1.1新)
· 411 - Length Required 服務(wù)器不能處理請求,除非客戶(hù)發(fā)送一個(gè)Content-Length頭。(HTTP 1.1新)
· 412 - Precondition Failed 請求頭中指定的一些前提條件失?。℉TTP 1.1新)。
· 413 – Request Entity Too Large 目標文檔的大小超過(guò)服務(wù)器當前愿意處理的大小。如果服務(wù)器認為自己能夠稍后再處理該請求,則應該提供一個(gè)Retry-After頭(HTTP 1.1新)。
· 414 - Request URI Too Long URI太長(cháng)(HTTP 1.1新)。
· 415 – 不支持的媒體類(lèi)型。
· 416 – Requested Range Not Satisfiable 服務(wù)器不能滿(mǎn)足客戶(hù)在請求中指定的Range頭。(HTTP 1.1新)
· 417 – 執行失敗。
· 423 – 鎖定的錯誤。
5xx - 服務(wù)器錯誤服務(wù)器由于遇到錯誤而不能完成該請求。
· 500 - Internal Server Error 服務(wù)器遇到了意料不到的情況,不能完成客戶(hù)的請求。
· 500.12 - 應用程序正忙于在 Web 服務(wù)器上重新啟動(dòng)。
· 500.13 - Web 服務(wù)器太忙。
· 500.15 - 不允許直接請求 Global.asa。
· 500.16 – UNC 授權憑據不正確。這個(gè)錯誤代碼為 IIS 6.0 所專(zhuān)用。
· 500.18 – URL 授權存儲不能打開(kāi)。這個(gè)錯誤代碼為 IIS 6.0 所專(zhuān)用。
· 500.100 - 內部 ASP 錯誤。
· 501 - Not Implemented 服務(wù)器不支持實(shí)現請求所需要的功能,頁(yè)眉值指定了未實(shí)現的配置。例如,客戶(hù)發(fā)出了一個(gè)服務(wù)器不支持的PUT請求。
· 502 - Bad Gateway 服務(wù)器作為網(wǎng)關(guān)或者代理時(shí),為了完成請求訪(fǎng)問(wèn)下一個(gè)服務(wù)器,但該服務(wù)器返回了非法的應答。 亦說(shuō)Web 服務(wù)器用作網(wǎng)關(guān)或代理服務(wù)器時(shí)收到了無(wú)效響應。
· 502.1 - CGI 應用程序超時(shí)。
· 502.2 - CGI 應用程序出錯。
· 503 - Service Unavailable 服務(wù)不可用,服務(wù)器由于維護或者負載過(guò)重未能應答。例如,Servlet可能在數據庫連接池已滿(mǎn)的情況下返回503。服務(wù)器返回503時(shí)可以提供一個(gè)Retry-After頭。這個(gè)錯誤代碼為 IIS 6.0 所專(zhuān)用。
· 504 - Gateway Timeout 網(wǎng)關(guān)超時(shí),由作為代理或網(wǎng)關(guān)的服務(wù)器使用,表示不能及時(shí)地從遠程服務(wù)器獲得應答。(HTTP 1.1新) 。
· 505 - HTTP Version Not Supported 服務(wù)器不支持請求中所指明的HTTP版本。(HTTP 1.1新)。