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. 使用Filter跟踪Asp.net MVC页面加载时间

    最近,客户一直反馈系统使用慢,有时候能够指出具体是哪个页面,有时候又只是笼统地反馈慢.这种问题就像是幽灵一样,非常不好处理.因为导致这种问题的因素非常之多,而且在开发工程中,很难模拟出实际运行是的环境 ...

  2. W3School-CSS 列表实例

    CSS 列表实例 CSS 实例 CSS 背景实例 CSS 文本实例 CSS 字体(font)实例 CSS 边框(border)实例 CSS 外边距 (margin) 实例 CSS 内边距 (paddi ...

  3. 搭建通过 ssh 访问的 Git 服务器

    一.Git 协议 Git 可以使用四种主要的协议来传输数据:本地传输,ssh 协议,Git 协议和 HTTP 协议. Git 使用的传输协议中最常见的就是 ssh 了.大多数环境已经支持通过 ssh ...

  4. 个人Github-欢迎交流探讨

    Github annsshadow

  5. 烂泥:haproxy与nginx、zabbix集成

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 昨天介绍了haproxy的手机匹配规则,今天再来介绍下haproxy与nginx.za ...

  6. java类加载器深入研究

    看了下面几篇关于类的加载器的文章,豁然开朗.猛击下面的地址开始看吧. Java类加载原理解析      深入探讨 Java 类加载器 分析BootstrapClassLoader/ExtClassLo ...

  7. /var/log/messages文件监控

    近来项目中遇到一个问题,情况是这样的,我们使用ELK中的LOGSTASH来监控LINUX的系统日志文件:/var/log/messages文件,但这个文件默认的权限是600,这样很为难, 我们使用特定 ...

  8. 导入项目时,有关[2016-04-03 20:38:02 - Dex Loader] Unable to execute dex: Multiple dex files 问题

    最近我在学习androidUI设计,在网上找了一个UI菜单界面开源代码示例,按照步骤导入项目,运行的时候控制台结果报了如下错误: [2016-04-03 20:38:02 - Dex Loader] ...

  9. 使用Vmware虚拟机部署开发环境之Mac OS X系统安装

    一.使用VMware虚拟机部署Swift开发环境所需工具: Vmware Workstation 10.0虚拟机软件 VM安装Mac解锁工具Unlock 苹果操作系统(Mac OS X Maveric ...

  10. OpenStack 行业正进入拓展期:行业云将成为新一轮工业革命的基础设施和引擎

    一直在关注华为2016 Connect 大会,本来没票,后来找朋友搞到了一张,参加了大会第一天下午的会议,时间虽短,但非常有收获.本来出发前还带了纸和笔,但是到了现场才发现只带了笔记本,笔却丢下了,所 ...