自定义 Ajax原生编写
ajax:function(opt){
var xmlhttp;
//创建对象
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //请求类型 默认post
opt.type = opt.type ? opt.type.toUpperCase() : '';
var reqType = opt.type === 'GET' ? 'GET' : 'POST'; /*
*防止使用时直接加了尾参 需要解析 ? 拼接参数 并区别get和post
*get 需要将参数全部拼接在url后; post将参数全部拼接在seng方法里
*get获取时防止缓存 添加随机数
*/
if(!opt.url){
throw new Error("please input url");
}
var getUrlArr = opt.url.split('?');
//请求地址一定是第一个
var setUrl = getUrlArr[0];
var setArguments = '';
//个数超过2 解析 arguments
if(getUrlArr.length > 1){
for(var i = 1; i< getUrlArr.length; i++ ){
setArguments += '&'+getUrlArr[i];
}
}
var userData = opt.data ? opt.data : '';
var userArguments = '';
if(userData){
for (var x in userData){
userArguments += '&'+x+'='+userData[x];
}
}
//拼接 url之后的和data里的参数
setArguments += userArguments;
//状态监测
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState == 4 ){
if(xmlhttp.status == 200){
try {
opt.success(JSON.parse(xmlhttp.responseText));
}catch(e){
opt.success(xmlhttp.responseText);
}
}else{
if(typeof opt.error == 'function'){
opt.error(xmlhttp.status);
}
}
}
} //默认异步 完整的后期编写
if(reqType === 'GET'){
xmlhttp.open(reqType,setUrl+'?t='+ Math.random()+setArguments,true);
xmlhttp.send();
}else{
setArguments = setArguments ? setArguments.substring(1) : '';
xmlhttp.open(reqType,setUrl,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=utf-8");
xmlhttp.send(setArguments);
}
return xmlhttp;
}
xmlhttp.readyState
0 请求未初始化(还没有调用 open()
1 请求已经建立,但是还没有发送(还没有调用 send()
2 请求已发送,正在处理中(通常现在可以从响应中获取内容头)
3 请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。
4 响应已完成;您可以获取并使用服务器的响应了。
xmlhttp.status
200 请求已成功,请求所希望的响应头或数据体将随此响应返回。

301 永久重定向,新的永久性的 URI 应当在响应的 Location 域中返回,浏览器会根据这个新的URI去请求.
如果这不是一个 GET 或者 HEAD 请求,浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。
注意:对于某些使用 HTTP/1.0 协议的浏览器,当它们发送的 POST 请求得到了一个301响应的话,接下来的重定向请求将会变成 GET 方式。 302 请求的资源现在临时从不同的 URI 响应请求,常作为临时域名更替时的重定向,新的临时性的 URI 应当在响应的 Location 域中返回.
除非这是一个 HEAD 请求,否则响应的实体中应当包含指向新的 URI 的超链接及简短说明。
注意:虽然RFC 1945和RFC 2068规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将302响应视作为303响应,
并且使用 GET 方式访问在 Location 中规定的 URI,而无视原先请求的方法。
状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。
PS 一个暂时重定向是一种服务器端的重定向,能够被搜索引擎蜘蛛正确地处理,(302 重定向和网址劫持)
302重定向很容易被搜索引擎误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,
罪名是“利用重复的内容来干扰Google搜索结果的网站排名”。因为302重定向经常被用于做url劫持,黑帽seo技术中,
而且百度在处理302重定向技术还不成熟,经常将它纳入到黑帽seo的范畴中,而google对这方面识别处理就完善了许多。
所以302重定向在现阶段的搜索引擎技术中,还是容易导致网站降权的,尽量不用。但从seo、网站优化方面来说是弊大于利。 304 客户端向服务器发送了请求,服务器如果通过发送的请求头信息进行资源对比,如果资源没有发生变化,则让浏览器继续使用上次
发送的资源,浏览器会缓存上次的资源,这时候状态码304就是告诉浏览器读缓存,如果资源更新,服务器就会返回200,返回新的资源,
浏览器接受到之后也会更新本地的资源时间戳,下次请求时会发送新的请求头。 400 客户端请求有误 403 服务器已经理解请求,但是拒绝执行它。如果这不是一个 HEAD 请求,而且服务器希望能够讲清楚为何请求不能被执行,
那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个404响应,假如它不希望让客户端获得任何信息。 404 请求失败,请求所希望得到的资源未被在服务器上发现 500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。 502 错误网关 503 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。
如果能够预计延迟时间,那么响应中可以包含一个 Retry-After 头用以标明这个延迟时间。如果没有给出这个 Retry-After 信息,
那么客户端应当以处理500响应的方式处理它。   
注意:503状态码的存在并不意味着服务器在过载的时候必须使用它。某些服务器只不过是希望拒绝客户端的连接。 504 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。   
注意:某些代理服务器在DNS查询超时时会返回400或者500错误

http常见状态码解析的更多相关文章

  1. HTTP 常见状态码解析

    1XX 表示消息 2XX 表示成功 3XX 表示重定向 4XX 表示请求错误 5XX 表示服务器端错误 消息:请求已被接受,需要继续处理.由于 HTTP/1.0 协议中没有定义任何 1xx 状态码. ...

  2. HTTP协议—常见的HTTP响应状态码解析

    常见的HTTP响应状态码解析 1XX Informational(信息性状态码) 2XX Success(成功状态码) 3XX Redirection(重定向状态码) 4XX Client Error ...

  3. http常见状态码及其解析

    HTTP状态码常见状态码及其解析 状态码 状态码英文名称 中文描述 100 Continue 继续.客户端应继续其请求 101 Switching Protocols 切换协议.服务器根据客户端的请求 ...

  4. HTTP协议、HTTP请求方法、常见状态码、HTTP消息

    HTTP协议 客户端请求,服务端响应.浏览器与服务器不建立持久连接,响应后连接失效. HTTP请求方法 一.GET GET方法用于获取请求页面的指定信息. 二.HEAD 除了服务器不能在响应里返回消息 ...

  5. 了解一下Http常见状态码、Http协议的工作特点和原理、Http请求Post与Get的区别

    HTTP协议常见状态码状态码的作用负责标记客户端请求服务器的返回结果,标记服务器端的处理是否正常,通知出现的错误等等职责,借助客户端可以知道客户端是否正常请求服务端.五大类:1XX(信息类状态码,接收 ...

  6. http协议与常见状态码

    什么是http: http是属于应用层(基于tcp的连接方式)的面向对象的协议,是计算机通过网络通信的规则,使得浏览器向web服务器请求信息和服务 http协议特点: http是一种无状态协议(对食物 ...

  7. http常见状态码有哪些?

    ajax常见面试题 1:什么是ajax?ajax作用是什么? 异步的javascript和xml AJAX 是一种用于创建快速动态网页的技术. ajax用来与后台交互 2:原生js ajax请求有几个 ...

  8. 计算机网络【9】—— HTTP1.0和HTTP1.1的区别及常见状态码

    一.HTTP1.0与HTTP1.1的区别 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持 ...

  9. Python Requests库 Get和Post的区别和Http常见状态码

    (1)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2)   GET方式提交的数据最多只能有1024 Byte,而P ...

随机推荐

  1. sql server 游标 写给自己

    ) --定义两个局部变量 @id @name 全局变量是两个@@name ) Declare Cur Cursor For --定义一个游标 select id,name from temp1 --查 ...

  2. mssql java 运行

    public void rlgy() throws IOException { Statement sql; ResultSet rs; String driverName = "com.m ...

  3. C# 文件操作笔记

    C#中的文件操作 文件操作中的常见类: 静态类 File类:提供很多静态方法,用于移动.复制和删除文件. Directory类:用于移动.复制和删除目录. Path类:用于处理与路径相关的操作. 实例 ...

  4. Spring boot学习一

    SSM框架:Spring+SpringMVC+MyBatisSpring Boot一.pom文件:pom.xml中添加:    <!--spring-boot-starter-web提供了对we ...

  5. 水的demo

  6. 配置 Docker 加速器(Docker Hub Mirror)

    Docker 加速器是什么,我需要使用吗? 使用 Docker 的时候,需要经常从官方获取镜像,但是由于显而易见的网络原因,拉取镜像的过程非常耗时,严重影响使用 Docker 的体验.因此 DaoCl ...

  7. AFNETWorking 不支持中文URL请求

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px } p.p ...

  8. IIS下Asp.Net应用程序多进程设置及Session共享

    背景: 目前项目中在单个进程的应用程序经常会遇到w3c.exe崩溃的情况,于是就设想是否可以通过IIS多进程的方案来避免出现该问题. 于是搜了下“怎么实现多进程的方案”,找到了这篇文章:http:// ...

  9. sql要点

    oracle 并操作 union  自动去除重复    如果想保留重复,需要使用union all 交操作intersect  自动去除重复    如果想保留重复,需要使用intersect all ...

  10. 0-js判断电脑或手机登录

    <script type="text/javascript"> try{ if(/Android|webOS|iPhone|iPod|BlackBerry/i.test ...