http://blog.csdn.net/lmh12506/article/details/7794512

HTTP协议是无状态的和Connection: keep-alive的区别

  http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.

HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。

  从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。

  Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。

HTTP响应消息

1. 响应消息格式

HTTP响应消息的格式如下所示:

  状态行

  通用信息头|响应头|实体头

  CRLF

  实体内容

  其中:状态行 = 版本号 [空格] 状态码 [空格] 原因 [回车换行]

  状态行举例:

  Eg1:

  HTTP/1.0 200 OK 

  Eg2:

  HTTP/1.1 400 Bad Request

  HTTP响应消息实例如下所示:

  HTTP/1.1 200 OK
  ETag: W/"158-1192590101000"
  Last-Modified: Wed, 17 Oct 2007 03:01:41 GMT
  Content-Type: text/html
  Content-Length: 158
  Date: Wed, 17 Oct 2007 03:01:59 GMT
  Server: Apache-Coyote/1.1
 

http的状态响应码

1:请求收到,继续处理

  100——客户必须继续发出请求

  101——客户要求服务器根据请求转换HTTP协议版本

2:操作成功收到,分析、接受

  200——交易成功
  201——提示知道新文件的URL

  202——接受和处理、但处理未完成

  203——返回信息不确定或不完整

  204——请求收到,但返回信息为空

  205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件

  206——服务器已经完成了部分用户的GET请求

3:完成此请求必须进一步处理

  300——请求的资源可在多处得到

  301——删除请求数据

  302——在其他地址发现了请求数据

  303——建议客户访问其他URL或访问方式

  304——客户端已经执行了GET,但文件未变化

  305——请求的资源必须从服务器指定的地址得到

  306——前一版本HTTP中使用的代码,现行版本中不再使用

  307——申明请求的资源临时性删除

4:请求包含一个错误语法或不能完成

  400——错误请求,如语法错误

  401——未授权

  HTTP 401.1 - 未授权:登录失败

  HTTP 401.2 - 未授权:服务器配置问题导致登录失败

  HTTP 401.3 - ACL 禁止访问资源

  HTTP 401.4 - 未授权:授权被筛选器拒绝

  HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败

  402——保留有效ChargeTo头响应

  403——禁止访问

  HTTP 403.1 禁止访问:禁止可执行访问

  HTTP 403.2 - 禁止访问:禁止读访问

  HTTP 403.3 - 禁止访问:禁止写访问

  HTTP 403.4 - 禁止访问:要求 SSL

  HTTP 403.5 - 禁止访问:要求 SSL 128

  HTTP 403.6 - 禁止访问:IP 地址被拒绝

  HTTP 403.7 - 禁止访问:要求客户证书

  HTTP 403.8 - 禁止访问:禁止站点访问

  HTTP 403.9 - 禁止访问:连接的用户过多

  HTTP 403.10 - 禁止访问:配置无效

  HTTP 403.11 - 禁止访问:密码更改

  HTTP 403.12 - 禁止访问:映射器拒绝访问

  HTTP 403.13 - 禁止访问:客户证书已被吊销

  HTTP 403.15 - 禁止访问:客户访问许可过多

  HTTP 403.16 - 禁止访问:客户证书不可信或者无效

  HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效

  404——没有发现文件、查询或URl

  405——用户在Request-Line字段定义的方法不允许

  406——根据用户发送的Accept拖,请求资源不可访问

  407——类似401,用户必须首先在代理服务器上得到授权

  408——客户端没有在用户指定的饿时间内完成请求

  409——对当前资源状态,请求不能完成

  410——服务器上不再有此资源且无进一步的参考地址

  411——服务器拒绝用户定义的Content-Length属性请求

  412——一个或多个请求头字段在当前请求中错误

  413——请求的资源大于服务器允许的大小

  414——请求的资源URL长于服务器允许的长度

  415——请求资源不支持请求项目格式

  416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段

  417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长。

5:服务器执行一个完全有效请求失败

  HTTP 500 - 内部服务器错误

  HTTP 500.100 - 内部服务器错误 - ASP 错误

  HTTP 500-11 服务器关闭

  HTTP 500-12 应用程序重新启动

  HTTP 500-13 - 服务器太忙

  HTTP 500-14 - 应用程序无效

  HTTP 500-15 - 不允许请求 global.asa

  Error 501 - 未实现

  HTTP 502 - 网关错误

学习HTTP的更多相关文章

  1. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  7. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  8. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  9. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  10. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

随机推荐

  1. Error: EACCES: permission denied, access '/usr/local/lib/node_modules'

    sudo chown -R username /usr/local/lib/node_modules 注:username要具有/usr/local/lib/node_modules的读写权限

  2. 【转】使用Freemarker实现网页静态化

    使用Freemarker实现网页静态化 2017年08月20日 20:45:51 阅读数:1981 1.1. 什么是freemarker FreeMarker是一个用Java语言编写的模板引擎,它基于 ...

  3. SpringCloud学习指南【更新】

    一. 推荐学习博客主页[更新] Spring Cloud 系列文章(纯洁的微笑,强烈推荐系列文章) Spring Cloud系列教程 (周立大大,强烈推荐) Spring Cloud入门到实战系列教程 ...

  4. Apache安装完后加入系统服务的相关操作详解

    Apache源码安装完毕后, 1.下面的脚本运行后就可以直接使用service apachexxx stop/start 来控制apache的启动与停止了! cp /usr/local/apache/ ...

  5. Pig的使用场景

    数据转换加载(ETL)数据流:读取原始数据(比如用户日志),进行数据清洗,进行简单的预计算后导入到数据仓库,比如join连接数据库里的用户信息.

  6. 手动搭建 redis 集群

    转自http://meia.fun/article/1544161420745 手动搭建 redis 集群 redis 基本命令: 启动 redis 服务:redis-server xxx.conf ...

  7. Object、T(以下代指泛型)、?的区别

    因为最近看了很多项目底层都使用了T,?泛型,于是百度了一下有如下理解 我们先来试着理解一下Object类,学习Java的应该都知道Object是所有类的父类,注意:那么这就意味着它的范围非常广!首先记 ...

  8. 3.Spring MVC return url问题总结

    一.return "cartSuccess" 和 return "redirect:/cart/cart.html" 的区别 二.return modelAnd ...

  9. HBase Scan流程分析

    HBase Scan流程分析 HBase的读流程目前看来比较复杂,主要由于: HBase的表数据分为多个层次,HRegion->HStore->[HFile,HFile,...,MemSt ...

  10. DataTable拷贝DataRow

    一开始,思路是这样的: DataTable dt = SqlHelper.GetTable("select * from Person"); DataTable dt2 = dt. ...