HTTP协议作为web服务的基础,理所应当受到重视,但是周围的同事能够讲清楚HTTP协议的凤毛麟角。既然是基础,就应该早一点掌握,所以近半年(2016-2月——2016年6月),不准备学习新技术了。首要的是将2015年看过的书,重新温习一遍,做到查漏补缺温故知新。看完之后,然后重点看以下的书单。

分别是:

1、《算法导论》

2、《HTTP权威指南》

3、《TCP/IP详解 卷一:协议》

4、《TCP/IP详解 卷二:实现》

5、《TCP/IP详解 卷三:TCP事务协议.HTTP和UNIX域协议》

6、《数据结构与算法分析(C语言描述)》

我想这些书已经够我半年啃的了。过年后的这些天基本上在看《图解HTTP》,这本书讲解的通俗易懂,一些难以理解的概念,语言本身已经描述的比较清晰了,但是还是画了漫画来表示,就更加的清晰了,如果想对HTTP协议有所了解的话,建议购买此书。但是作为深入研究的话,还是推荐《HTTP权威指南》。其实更好的方法是,徐徐渐进,先读《图解HTTP》,不至于被晦涩难懂的概念吓跑,等了解的差不多了,就可以深入学习《HTTP权威指南》了。

基本的书籍已经介绍到这里了,下面来简单介绍下HTTP的状态码。


在介绍状态码之前,要简单讲一下为什么要有状态码这个东西。计算机之间的通信以协议为共同基础,客户端和服务端都按照协议的约定进行通信。HTTP的状态码就在HTTP的协议内,规定了很多的状态。客户端请求服务端后,服务端就返回结果,同时返回状态码。告诉客户端,本次请求是成功了还是失败了,还是要客户端做什么操作。那为什么不使用文本状态码呢?不是更加清晰直观吗?这是因为这些状态协议里面已经规定了,提到状态码,就是表示本条状态。想到一个小笑话,有助于理解这个状态码:

在某个外星球家庭,人们讲笑话通常不讲出笑话的内容,而是直接说编号,一个编号就代表一个笑话。有一天从地球来了一个年轻的帅小伙,爱上了这个家的女孩,就到他家里去做客。吃完饭,这个星球流行讲笑话消食,跟地球饭后喝茶是一个道理的。

外祖父说:404;

所有的人都捧腹大笑。

外祖母说:200;

大家都忍俊不禁。

他女朋友说:502;

大家更是笑的流出了眼泪。

等轮到了他,他恍然不知所措,于是胡乱编了一个数字,那就500吧。所有的人都笑的前仰后合不能自己。

他完全搞不懂了,问大家,为什么好笑。女朋友讲:我们星球上只有一本笑话书,大家都背的很熟,所以提到某个编号,就代表一个笑话,我们都知道。但是我们的笑话里,没有500这个号码呀。

说的就是这个道理,所以用状态码表示。

常用的状态码不多,约有14种。

1** 类状态码称之为Information 状态吗,表示信息正在处理。

2** 类状态码称为为Success状态码,表示请求正常完成。

3**类状态码称之为Redirection 状态码,表示需要客户端进行附加操作(如跳转。重定向)

4**类状态码称之为Error状态码,通常是由于客户端的错误导致的。

5**类状态吗称为Server Error状态码,通常是服务端的错误导致的。

小结下:状态码分为客户端错误状态码、服务端错误状态码、成功状态码,重定向状态码等。

一 、 2** 类型状态码

1、200  ok  表示从客户端发送的请求被服务端正确的处理并且已经发回了请求。

2、204  No Content 请求已经成功了,但是却没有返回任何结果(实体)。通常使用php die() exit()函数会引发204状态码。

3、206  Partial Content 范围请求状态码。

范围请求是个什么东西。看下图就知道了.

上图的美女图的一些部分没有加载完成,实际上互联网加载图片就是用的范围请求。一个图片可能有1024k,一次加载的话,页面的渲染速度就会非常缓慢,体现会比较差。执行异步的范围请求之后,每次加载256k的图片,然后依次渲染出来拼接出来,加载速度就会明显快很多。

上面的206 值得就是http请求执行了范围请求,只获取了一部分资源。

二、3**状态码

1、301 状态码 Moved Permanently  表示你请求的页面资源现在已经转移位置了,你需要到新的地方去需找该页面。这个即重定向,服务器的response首部里会有location字段值来提示。

2、302 状态码(Found)和301差不过。表示你请求的页面资源现在已经转移位置了,你要到新的地方去寻找。但是新的地方也不是固定的,说不定过几天还要换。不提示用户保存书签,提示用户跳转。

3、303 状态码。See other .表示你请求的页面中包含着你想要拿到资源的地址。比如你到门卫处去取快递,到了门卫处,大爷说快递已经交给前台了。这个过程会返回303状态码。

4、304 Not Modified 表示资源已经找到了,但是和上次相比没有更新。浏览器读取缓存。

5、307 Temporary Redirect 临时重定向。

三:4** 客户端错误。

1、400 Bad Request 报文语法错误。

2、401 Unauthorized 需要通过HTTP认证(BASIC 或者DIGEST).

3、403 Forbidden 目录、文件权限错误都会报此状态码。

4、404 服务器上无此资源,一般情况为路径错误。

四:5** 服务端错误。

1、500 Internal Server Error   服务端错误,有可能是WEB应用存在错误。

2、503 Serveice Unavailable   服务器超负荷运行。

这些东西,没必要死记硬背。使用的时候去查下文档就好了。这也是我写此篇博客的原因:留此存证,以备不时之需。

HTTP协议 -- 认清协议常用状态码的更多相关文章

  1. HTTP协议,Http 常用状态码

    一.HTTP协议-Request   HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文.   1.1 HTTP请求报 ...

  2. Java Web学习总结(21)——http协议响应状态码大全以及常用状态码

    http协议响应状态码大全以及常用状态码 当我们在浏览网页或是在查看服务器日志时,常会遇到3位数字的状态码,这3位数字是什么意思呢?其实,这3位数字是HTTP状态码,用来表示网页服务器HTTP响应状态 ...

  3. HTTP协议常用状态码

    HTTP协议常用状态码   <?php    send_http_status(404);   /**  * HTTP Protocol defined status codes * HTTP协 ...

  4. HTTP协议图--HTTP 响应状态码(重点分析)

    1. 状态码概述 HTTP 状态码负责表示客户端 HTTP 请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作. HTTP 状态码如 200 OK ,以 3 位数字和原因短语组成.数字中 ...

  5. HTTP常用状态码大全

    HTTP状态码对照表 HTTP response codes 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码 ...

  6. http协议(四)http常用状态码

    一:http状态码 表示客户端http请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作 状态码的类别如下: http状态码种类繁多,大概有60多种,实际上经常使用的只有14种,下面为一 ...

  7. HTTP协议----请求方法和状态码

    现在广泛使用的是HTTP/1.1版本,发布于1997年. 理解HTTP协议,首先从请求开始,比如: POST /form/entry HTTP/1.1 格式为: 请求方法 URI 协议版本 请求方法: ...

  8. 02 http协议之方法与状态码

    一:HTTP请求信息和响应信息的格式 请求: ()请求行 ()请求头信息 ()请求主体信息(可以没有) () 头信息结束后和主体信息之间要空一行 请求行又分3部分 请求方法 请求路径 所用的协议 请求 ...

  9. http协议中常见的状态码以及请求方式,http协议的组成

    请求状态码: 2xxx:表示请求成功,例如200. 3xxx:表示请求被重定向,表示完成请求,需要进一步操作,例如 302. 4xxx:表示请求错误,例如:404,资源没有找到. 5xxx:表示服务器 ...

随机推荐

  1. Linux笔记:使用Vim编辑器

    Vi编辑器是Unix系统上早先的编辑器,在GNU项目将Vi编辑器移植到开源世界时,他们决定对其作一些改进. 于它不再是以前Unix中的那个原始的Vi编辑器了,开发人员也就将它重命名为Vi improv ...

  2. Source Insight常用功能设置

    熟悉工具的使用能在一定程度上提高工作效率,但工具永远只是工具,大家要把重点放在内功的修炼上. 符号导航 符号(变量.宏定义.结构定义.枚举.函数等等)在SI 中的检索非常方便.Ctrl+鼠标左键或Ct ...

  3. Windows server用好windows server backup,发挥个人电脑该有的系统还原功能

    笔记本上安装windows server的各位是不是有个感触,默认软件升级.软件更新,系统是没有系统还原的(磁盘清理发现也没有还原点可清理),也就是系统出了问题,还原不了干着急. 其实,windows ...

  4. ubuntu 12.04下安装openldap,slapd.conf找不到的解决方法

    https://help.ubuntu.com/12.04/serverguide/openldap-server.html ubuntu安装openldap经历了一系列挫折,网上找了半天资料都是一模 ...

  5. 【转载、推荐】不要自称是程序员,我十多年的 IT 职场总结

    注评:一气读完后,有些和我的观点类似.这篇文章显然是外国老写的,但是不妨碍我们的跨国交流. 如果我可以给每个工程教育增加一门课,它不会涉及编译器.门电路或是时间复杂度,而是一门介绍行业现实的入门课,因 ...

  6. 【2016-11-7】【坚持学习】【Day22】【Oracle 分页查询】

    方法1: select * from (select rownum rn, temp.* from ( +sqlText+ ) temp ) where rn > "+ start + ...

  7. 三维网格补洞算法(Radial Basis Function)

    在逆向工程中,由于设备或模型的原因,我们获取得到的三维模型数据往往并不完整,从而使得生成的网格模型存在孔洞,这对后续的模型分析会造成影响.下面介绍一种基于径向基函数(RBF:Radial Basis ...

  8. BZOJ 1014: [JSOI2008]火星人prefix [splay 二分+hash] 【未完】

    1014: [JSOI2008]火星人prefix Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 6243  Solved: 2007[Submit] ...

  9. Java程序设计之整数分解

    题目:题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 解题过程也很简单,下面直接上代码了: import java.util.ArrayList; import java. ...

  10. 第7章 权限管理(1)_ACL权限

    1. ACL权限 1.1 ACL权限简介与开启 (1)ACL权限简介 ①ACL是Access Control List的缩写,主要目的是在提供传统的owner,group,others的read,wr ...