AJAX問題 XMLHttpRequest.status = 0是什麼含義

在調用AJAX的時候遇到了XMLHttpRequest. status爲0 的狀況,http協議裏但是沒這個狀態碼的,衆所周知,XMLHttpRequest. Status爲HTTP請求狀態碼,通常爲1xx-5xx,這個0是什麼含義,讓我以爲很好奇。html

XMLHttpRequest 對象的三有個重要的屬性:跨域

onreadystatechange 瀏覽器

存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。服務器

readyState函數

存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。url

0: 請求未初始化spa

1: 服務器鏈接已創建code

2: 請求已接收xml

3: 請求處理中htm

4: 請求已完成,且響應已就緒

status 

200: "OK"

404: 未找到頁面

 

XMLHttpRequest status = 0 問題

最後翻啊翻啊,找啊找啊,終於找到一個XMLHttpRequest的說明

The status attribute must return the result of running these steps:

status的值必定會返回運行這些步驟的結果。

一、If the state is UNSENT or OPENED, return 0.(若是狀態是UNSENT或者OPENED,返回0)
二、If the error flag is set, return 0.(若是錯誤標籤被設置,返回0)
三、Return the HTTP status code.(返回HTTP狀態碼)

 

若是在HTTP返回以前就出現上面兩種狀況,就出現0了。

後來我又查閱到了,0 表明本地響應成功。

 

先說兩個button,一個是url是:file:///E:/test2.html,另一個是:http://www.baidu.com。第一個button的url訪問只是本地打開沒有經過服務器,本身能夠用Wireshark捉包。

應該是xmlhttp本身在模擬,由於根本就沒經過服務器。本地直接打開而已。OPENED了,因此status爲0。

 

第二個button的url訪問雖然是其餘域名,抓包是有的,可是,這是跨域訪問了,

雖然去訪問了,應該是瀏覽器跨域的返回頭沒有容許,因此瀏覽器阻止,Access-Control-Allow-Origin這個屬性。因此status爲0。

相關文章
相關標籤/搜索