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。

相关文章
相关标签/搜索