1. 程式人生 > >xmlHttp的readyState 和 status引數詳解

xmlHttp的readyState 和 status引數詳解

AJAX中有檢查狀態碼的,

xmlHttp.onreadystatechange=handleStateChange;

 

function handleStateChange()
 {
  if(xmlHttp.readyState==4)
  {
   if(xmlHttp.status==200)
   {
    parseResults(); //解析返回值
   }
  }
 }

XMLHTTP 的 readyState 值含義:

  • 0-未初始化,即尚未呼叫 open。
  • 1-初始化,即尚未呼叫 send。
  • 2-傳送資料,即已經呼叫 send。
  • 3-資料傳送中。
  • 4-完成。

    HTTP伺服器狀態程式碼定義

     

    1.1 訊息1xx(Informational 1xx)

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

     

    1.2 成功2xx(Successful 2xx)

    表示客戶端請求被成功接收、理解、接受。

    200 OK

    請求成功。迴應的資訊依賴於請求所使用的方法,如下:

    GET 要請求的資源已經放在迴應的實體中了。

    HEAD 沒有實體主體,迴應中只包括標題資訊。

    POST 實體(描述或包含操作的結果)。

    201 Created

    請求完成,結果是建立了新資源。新建立資源的URI可在迴應的實體中得到。原始伺服器應在發出該狀態程式碼前建立該資源。如果該操作不能立即完成,伺服器必須在該資源可用時在迴應主體中給出提示,否則,伺服器端應迴應202(可被接受)。

    在本文定義的方法,只有POST可以建立資源。

    202 Accepted

    請求被接受,但處理尚未完成。請求可能不一定會最終完成,有可能被處理過程隨時中斷,在這種情況下,沒有辦法在非同步操作中重新發送狀態程式碼。

    202迴應是沒有義務的,這樣做的目的是允許伺服器不必等到使用者代理和伺服器間的連線結束,就可以響應其它過程的請求(象每天執行一次的,基於批處理的過程)。

    在某些迴應中返回的實體中包括當前請求的狀態指示、狀態監視器指標或使用者對請求能否實現的評估資訊。

    204 No Content

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

     

    1.3 重定向(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迴應中給出的域值發生變化,快取都應當對快取的實體進行更新。

     

    1.4 客戶端錯誤(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(禁止)狀態碼。

     

    1.5 伺服器錯誤(Server Error )5xx

    迴應程式碼以‘5’開頭的狀態碼錶示伺服器端發現自己出現錯誤,不能繼續執行請求。如果客戶端在收到5xx狀態碼時,請求尚未完成,它應當立即停止向伺服器傳送資料。除了迴應HEAD請求外,伺服器應當在其迴應實體中包括對錯誤情況的解釋、並指明是臨時性的還永久性的。

    這類迴應程式碼沒有標題域,可適用於任何請求方法。

    500 伺服器內部錯誤(Internal Server Error)

    伺服器碰到了意外情況,使其無法繼續迴應請求。

    501 未實現(Not Implemented)

    伺服器無法提供對請求中所要求功能的支援。如果伺服器無法識別請求方法就會迴應此狀態程式碼,這意味著不能迴應請求所要求的任何資源。

    502 非法閘道器(Bad Gateway)

    充當閘道器或代理的伺服器從要傳送請求的上游(upstream)伺服器收到非法的迴應。

    503 服務不可用(Service Unavailable)

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

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

     

    IIS 錯誤程式碼大彙總

    400 無法解析此請求。

    401.1 未經授權:訪問由於憑據無效被拒絕。

    401.2 未經授權: 訪問由於伺服器配置傾向使用替代身份驗證方法而被拒絕。

    401.3 未經授權:訪問由於 ACL 對所請求資源的設定被拒絕。

    401.4 未經授權:Web 伺服器上安裝的篩選器授權失敗。

    401.5 未經授權:ISAPI/CGI 應用程式授權失敗。

    401.7 未經授權:由於 Web 伺服器上的 URL 授權策略而拒絕訪問。

    403 禁止訪問:訪問被拒絕。

    403.1 禁止訪問:執行訪問被拒絕。

    403.2 禁止訪問:讀取訪問被拒絕。

    403.3 禁止訪問:寫入訪問被拒絕。

    403.4 禁止訪問:需要使用 SSL 檢視該資源。

    403.5 禁止訪問:需要使用 SSL 128 檢視該資源。

    403.6 禁止訪問:客戶端的 IP 地址被拒絕。

    403.7 禁止訪問:需要 SSL 客戶端證書。

    403.8 禁止訪問:客戶端的 DNS 名稱被拒絕。

    403.9 禁止訪問:太多客戶端試圖連線到 Web 伺服器。

    403.10 禁止訪問:Web 伺服器配置為拒絕執行訪問。

    403.11 禁止訪問:密碼已更改。

    403.12 禁止訪問:伺服器證書對映器拒絕了客戶端證書訪問。

    403.13 禁止訪問:客戶端證書已在 Web 伺服器上吊銷。

    403.14 禁止訪問:在 Web 伺服器上已拒絕目錄列表。

    403.15 禁止訪問:Web 伺服器已超過客戶端訪問許可證限制。

    403.16 禁止訪問:客戶端證書格式錯誤或未被 Web 伺服器信任。

    403.17 禁止訪問:客戶端證書已經到期或者尚未生效。

    403.18 禁止訪問:無法在當前應用程式池中執行請求的 URL。

    403.19 禁止訪問:無法在該應用程式池中為客戶端執行 CGI。

    403.20 禁止訪問:Passport 登入失敗。

    404 找不到檔案或目錄。

    404.1 檔案或目錄未找到:網站無法在所請求的埠訪問。

    注意 404.1 錯誤只會出現在具有多個 IP 地址的計算機上。如果在特定 IP 地址/埠組合上收到客戶端請求,而且沒有將 IP 地址配置為在該特定的埠上偵聽,則 IIS 返回 404.1 HTTP 錯誤。例如,如果一臺計算機有兩個 IP 地址,而只將其中一個 IP 地址配置為在埠 80 上偵聽,則另一個 IP 地址從埠 80 收到的任何請求都將導致 IIS 返回 404.1 錯誤。只應在此服務級別設定該錯誤,因為只有當伺服器上使用多個 IP 地址時才會將它返回給客戶端。

    404.2 檔案或目錄無法找到:鎖定策略禁止該請求。

    404.3 檔案或目錄無法找到:MIME 對映策略禁止該請求。

    405 用於訪問該頁的 HTTP 動作未被許可。

    406 客戶端瀏覽器不接受所請求頁面的 MIME 型別。

    407 Web 伺服器需要初始的代理驗證。

    410 檔案已刪除。

    412 客戶端設定的前提條件在 Web 伺服器上評估時失敗。

    414 請求 URL 太大,因此在 Web 伺服器上不接受該 URL。

    500 伺服器內部錯誤。

    500.11 伺服器錯誤:Web 伺服器上的應用程式正在關閉。

    500.12 伺服器錯誤:Web 伺服器上的應用程式正在重新啟動。

    500.13 伺服器錯誤:Web 伺服器太忙。

    500.14 伺服器錯誤:伺服器上的無效應用程式配置。

    500.15 伺服器錯誤:不允許直接請求 GLOBAL.ASA。

    500.16 伺服器錯誤:UNC 授權憑據不正確。

    500.17 伺服器錯誤:URL 授權儲存無法找到。

    500.18 伺服器錯誤:URL 授權儲存無法開啟。

    500.19 伺服器錯誤:該檔案的資料在配置資料庫中配置不正確。

    500.20 伺服器錯誤:URL 授權域無法找到。

    500.100 內部伺服器錯誤:ASP 錯誤。

    501 標題值指定的配置沒有執行。

    502 Web 伺服器作為閘道器或代理伺服器時收到無效的響應
    原文地址:https://blog.csdn.net/xiaxiaorui2003/article/details/4084115