http常见状态码解析
自定义 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常见状态码解析的更多相关文章
- HTTP 常见状态码解析
1XX 表示消息 2XX 表示成功 3XX 表示重定向 4XX 表示请求错误 5XX 表示服务器端错误 消息:请求已被接受,需要继续处理.由于 HTTP/1.0 协议中没有定义任何 1xx 状态码. ...
- HTTP协议—常见的HTTP响应状态码解析
常见的HTTP响应状态码解析 1XX Informational(信息性状态码) 2XX Success(成功状态码) 3XX Redirection(重定向状态码) 4XX Client Error ...
- http常见状态码及其解析
HTTP状态码常见状态码及其解析 状态码 状态码英文名称 中文描述 100 Continue 继续.客户端应继续其请求 101 Switching Protocols 切换协议.服务器根据客户端的请求 ...
- HTTP协议、HTTP请求方法、常见状态码、HTTP消息
HTTP协议 客户端请求,服务端响应.浏览器与服务器不建立持久连接,响应后连接失效. HTTP请求方法 一.GET GET方法用于获取请求页面的指定信息. 二.HEAD 除了服务器不能在响应里返回消息 ...
- 了解一下Http常见状态码、Http协议的工作特点和原理、Http请求Post与Get的区别
HTTP协议常见状态码状态码的作用负责标记客户端请求服务器的返回结果,标记服务器端的处理是否正常,通知出现的错误等等职责,借助客户端可以知道客户端是否正常请求服务端.五大类:1XX(信息类状态码,接收 ...
- http协议与常见状态码
什么是http: http是属于应用层(基于tcp的连接方式)的面向对象的协议,是计算机通过网络通信的规则,使得浏览器向web服务器请求信息和服务 http协议特点: http是一种无状态协议(对食物 ...
- http常见状态码有哪些?
ajax常见面试题 1:什么是ajax?ajax作用是什么? 异步的javascript和xml AJAX 是一种用于创建快速动态网页的技术. ajax用来与后台交互 2:原生js ajax请求有几个 ...
- 计算机网络【9】—— HTTP1.0和HTTP1.1的区别及常见状态码
一.HTTP1.0与HTTP1.1的区别 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持 ...
- Python Requests库 Get和Post的区别和Http常见状态码
(1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2) GET方式提交的数据最多只能有1024 Byte,而P ...
随机推荐
- Spring @Autowired注解在utils静态工具类
[转] 使用场景:在一个静态方法中,如何使用以下注入: @Autowired private ItemMapper itemMapper; @Component public class TestUt ...
- 给Source Insight做个外挂系列之三--构建外挂软件的定制代码框架
上一篇文章介绍了“TabSiPlus”是如何进行代码注入的,本篇将介绍如何构建一个外挂软件最重要的部分,也就是为其扩展功能的定制代码.本文前面提到过,由于windows进程管理的限制,扩展代码必须以动 ...
- HTML JQuery 技巧总结
元素之间的操作 $(".level1").children() 获取到所有相邻的子元素$(".level1").children("a") ...
- sql注入漏洞
在这么多bug里给我印象最深的就是sql注入漏洞,看上去没有问题的代码却会因为用户的不正常输入而带来极其严重的问题. 现在给大家分享一下如何修复SQL注入漏洞.下面是网上的两种解决方法,其中第二方法有 ...
- 在DCOM 中不存在WORD、EXCEL等OFFICE组件
DCOM里面没有与office相关的所有组件解决方法:先简单说下,操作步骤(项目演示完成后,补上图): Run MMC -32 File Add Remove Snap-in Component Se ...
- Oracle实战训练——ATM取款机业务
ATM取款机的数据库模拟开发和实战总结 一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现 ...
- win7下开启telnet命令
win7下开启telnet命令 win7上telnet这条命令默认被关闭了. 开启telnet方法如下: 一,打开控制面版 二,选择程序 三,选择打开或关闭windows功能 在弹出窗口中把 Teln ...
- 上下箭头选中 选项事件 JS
//上下键 选择事件 searchBackgroud 为样式,只做标记,无实质样式,因为和其他样式不兼容,只能添加CSS $(document).keydown(function (event) { ...
- C#获取网页的HTML码、下载网站图片、获取IP地址
1.根据URL请求获取页面HTML代码 /// <summary> /// 获取网页的HTML码 /// </summary> /// <param name=" ...
- 点餐系统sprint3总结
转眼间,sprint3也结束了.意味着软件工程的课程结束了,我们的项目也完成了.在队友们的认真学习,专注打码,辛苦赶工后,我们的项目完成了.显然是仓促中完成的,没有完美的界面.没有无bug的项目,但是 ...