标签:ber json img rri 请求头 客户端 关于 change str
当我们声明了一个XMLHttpRequest对象的实例的时候,使用for-in来循环遍历一下这个实例(本文使用的是chrome45版本浏览器),我们会发现在这个实例上绑定了一些内容,我把这些内容进行了一下分类:
下面对这五个分类的前四个已经里面的内容进行一个详细的记录~(有人可能会问,不是上面分了五个分类吗,可素第五个分类就那5个不可改变的值,也没有什么好说的+_+)
一、配置项
① timeout
timeout是用来设置超时时间的,默认的值是0,也就是说没有超时限制,不管请求多久都不会触发超时。可以给他设置一个类型为数字的值,代表多少毫秒之后如果没有收到响应就触发超时事件(ontimeout)。
② withCredentials
这个值是来配置是否在发送的时候携带着凭据,默认值是false,也就是默认不携带。所谓的凭据指的就是cookie、HTTP认证及客户端SSL证明等信息。这个是在CORS跨域的时候与服务器的Access-Control-Allow-Credentials进行配合使用的,如果发送了携带凭据的请求,但是服务器的响应里面没有Access-Control-Allow-Credentials是true这个值的头,那么浏览器就会由于同源限制把响应给屏蔽掉,并且调用xhr的oerror事件。
例如有下面这一段代码:
var xhr=new XMLHttpRequest();
xhr.withCredentials=true;
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
if(xhr.status==200){
console.log("success!");
}
}
}
xhr.onerror=function(e){
console.log("error!");
}
xhr.open("GET","http://127.0.0.1/withCredentials.php");
xhr.send(null);
如果在服务端的代码试下嘛这样子的:header("Access-Control-Allow-Origin: *");
echo "ok";
XMLHttpRequest cannot load http://127.0.0.1/withCredentials.php. Credentials flag is "true", but the "Access-Control-Allow-Credentials" header is "". It must be "true" to allow credentials. Origin "http://192.168.1.106" is therefore not allowed access.
header("Access-Control-Allow-Origin: http://192.168.1.106");
header("Access-Control-Allow-Credentials: true");
echo "ok";
if(xhr.readyState==4){
if(xhr.status>=200&&xhr.status<300 ||="" xhr.status="=304){" console.log(xhr.response);="" }="" }<="" code=""></300>
③ statusTextvar xhr = new XMLHttpRequest();
var onProgressHandler = function(event) {
if(event.lengthComputable) {
console.log((event.loaded / event.total) * 100);
} else {
console.log("Can"t determine the size of the file.");
}
}
xhr.upload.addEventListener("progress", onProgressHandler, false);
xhr.open("POST","http://iwenku.net");
xhr.send(data);
三、方法项var xhr=new XMLHttpRequest();
xhr.open("GET","http://127.0.0.1/openTest.php");
xhr.send(null);
xhr.onreadystatechange=function(){
if(xhr.readyState===xhr.DONE){
console.log("done");
}
}
console.log("response"+xhr.responseText);
for(var i=0;i<3;i++){ console.log(i);="" }<="" code=""></3;i++){>
上面open方法没有传入第三个参数,也就是使用了默认值true,代表这是一个异步的请求,最后程序的输出为:var xhr=new XMLHttpRequest();
xhr.open("GET","http://127.0.0.1/getResponseHeader.php");
xhr.send(null);
xhr.onreadystatechange=function(){
if(xhr.readyState===xhr.DONE){
console.log(xhr.getResponseHeader("Content-Type"));
}
}
上面这一段代码会输出”text/html“,也就是说在相应头中的Content-Type就是这个。标签:ber json img rri 请求头 客户端 关于 change str
原文地址:https://www.cnblogs.com/gaoht/p/11044736.html