本文是《HTTP权威指南》的读书笔记

HTTP报文是简单的格式化数据块。每条报文都包含一条来自客户端的请求或一条来自服务器的响应。它们由三部分组成:

  • 对报文进行描述的起始行(start line);
  • 包含属性的首部块(head);
  • 可选的,包含数据的主体(body)部分;

请求报文的格式与响应报文的格式稍有不同:

  • 请求报文的格式为:
<method><request-URL><version>
<headers>
<entity-body>
  • 响应报文的格式为:
<version><status><reason-phrase>
<headers>
<entity-body>

报文各部分的简要描述:

  • method,客户端希望服务器对资源执行的动作,如GET,HEAD,POST等;
  • requset-URL,命名所请求的资源;
  • version,报文所使用的HTTP的版本;
  • status,状态码,用三位数字描述请求过程中所发生的情况,如200,表示请求成功;
  • reasuon-phrase,前面状态码的可读短语;
  • headers,首部,可以有零个或多个首部,每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个CRLF;
  • entity-body,主体部分,包含一个由任意数据组成的数据块;

常用的HTTP方法:

方法 描述 是否包含主体
GET 从服务器获取信息
HEAD 只从服务器获取信息的首部
POST 向服务器发送需要处理的数据
TRACE 对可能经过代理服务器传到服务器上去的报文进行追踪
PUT 将请求的主体存储在服务器上
OPTIONS 决定可以在服务器上执行哪些方法
DELETE 从服务器上删除一份文档

HTTP定义了一组称为安全方法的方法:GET和HEAD,因为这两个方法都不会在服务器上产生什么结果(不会对服务器上的资源进行更改,删除等);TRACE方法允许客户端在最终将请求发送给服务器时,看看它变成什么样子了(发起一个请求时,这个请求可能会经过一系列的中间节点,如代理,防火墙等,每个中间节点都可能会修改原始的HTTP请求;)

状态码用来描述请求过程发生的情况,状态码的分类:

整体范围 已定义范围 分类
100~199 100~101 信息提示
200~299 200~206 成功
300~399 300~305 重定向
400~499 400~415 客户端错误
500~599 500~505 服务器错误

最常见的状态码:

状态码 原因短语 含义
200 OK 成功,请求的所有数据都在响应主体中
401 Unauthorized(未授权) 需要输入用户名和密码
404 Not Found(没有找到) 服务器无法找到请求URL所对应的资源

状态码的详细信息:

1. 100~199信息状态码
状态码 原因短语 含义
100 Continue 收到请求的初始部分,请客户端继续
101 Switching Protocols 服务器将根据客户端的指定,将协议切换为Update首部所列的协议

对于100状态码的使用,如果客户端想向服务器发送一个实体,但不知道服务器是否可以接受,则可以发送带有100状态码的请求,服务器收到这个状态杩的请求后,根据自己的情况,对这个请求进行响应;

2. 200~299 成功状态码
状态码 原因短语 含义
200 OK 请求成功,所有数据都在响应主体中
201 Created 用于创建服务器对象的请求,服务器必须在发送这个状态码之前创建好对象
202 Accepted 请求已接受,但服务器还未对其执行任何动作
203 Non-Authoriative 实体首部所包含信息不是来自源端服务器,是资源的一个副本
204 No Content 响应报文中没有主体的实体部分,只有首部与状态行;
205 Reset Content 让浏览器清除当前页面的所有HTML表单元素
206 Parial Content 成功执行了一个部分请求
3. 300~399 重定向状态码
状态码 原因短语 含义
300 Multiple Choice 客户端请求一个实际指向多个资源的URL时返回这个状态码,让用户进行选择
301 Moved Permanently 在请求的URL已被移除时使用,响应的首部会包含资源现在所处的URL
302 Found 与301类似,使用首部给出的URL来临时定位资源,但将来的请求仍使用老的URL
304 Not Modified 带这个状态码的响应不会包含实体的主体部分
305 Used Proxy 说明必须通过代理来访问资源,代理位置由Location首部给出
307 Temporaty Redirect 与302类似
4.400-499 客户端错误状态码
状态码 原因短语 含义
400 Bad Request 发送了一个错误的请求
401 Unauthorized 在得到资源前,需要对客户端的身份进行验证
402 Payment Required 保留,还未使用
403 Forbidden 请求被拒绝
404 Not Found 请求的资源没有找到
405 Method Not Allowed 使用不被允许的方法对资源进行访问,响应的Allows首部会包含可以使用的方法
406 Not Acceptable 客户端指定参数说明它们可以接收什么类型的实体,服务器没有客户端所希望的类型的资源时,返回该状态码
407 Proxy Authentication Required 与401类似,用于要求对资源认证的代理服务器
408 Request Timeout 请求超时
409 Conflict 请求可能会在资源上引发冲突,响应中会包含描述冲突的主体
410 Gone 与404类似,但服务器曾经存在该资源
411 Length Required 服务器要求请求报文中包含Content-Length首部时使用
412 Proconditin Failed 客户端发起条件请求,但其中一个条件失败了
413 Request Entity Too Large 客户端发送的实体比服务器希望处理的要大
414 Request URI Too Long 请求URI过长
415 Unsupported Media Type 服务器无法支持客户端所发实体的内容类型
416 Request Range Not Satisfiable 请求的范围无效或无法满足
417 Expectation Failed 服务器无法满足请求报文中Except首部中的期望
5.500~599 服务器错误状态码
状态码 原因短语 含义
500 Internal Server Error 服务器遇到一个妨碍它为请求提供服务的错错误
501 Not Implemented 请求超出服务器的能力范围(如,使用了服务器不支持的请求方法)
502 Bad Gateway 代为代理或网关的服务器无法连接到其父网关
503 Service Unavailable 服务器现在无法为请求提供服务
504 Gateway Timeout 网关或代理在请求另一服务器响应时超时了
505 HTTP Version Not Supported 服务器无法或不愿支持请求的协议版本

HTTP的报文与状态码的更多相关文章

  1. HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结

    HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行   请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GE ...

  2. HTTP请求响应报文 - 相关状态码 - GET_POST请求方法

    HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET ...

  3. 《图解Http》 2-6章: 基础,报文,状态码,首部。

    HTTP协议和Cookie 是stateless协议,自身不对请求和响应之间的通信状态进行保存.但随着技术发展,为了实现保存状态的功能,引入了Cookie技术. Cookie在请求和响应报文中写入信息 ...

  4. HTTP权威指南-报文与状态码

    所有的报文都向下流动 报文流向 报文组成 HTTP方法 状态码 GET示例 HEAD示例 100~199 信息性状态码 200~299 成功状态码 300~399重定向状态码 400~499 客户端错 ...

  5. HTTP响应报文应答状态码及含义

    本应答报文状态码是老猿结合多方资料收集综合后并加以老猿自己的理解进行说明的应答报文状态码,应该是最新最全解释最详尽的,供大家参考:

  6. Http报文 状态码

    一.HTTP报文 1.HTTP报文介绍 HTTP报文:用于HTTP协议交互的信息. HTTP报文由报文头部和报文主体(非必须)构成,中间由空行来分隔. 1.1 请求报文:客户端发起的报文. 1).报文 ...

  7. HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端

    协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...

  8. http的报文结构和状态码的含义

    HTTP响应报文解剖 响应报文结构 HTTP的响应报文也由三部分组成(响应行+响应头+响应体): 以下是一个实际的HTTP响应报文: ①报文协议及版本: ②状态码及状态描述: ③响应报文头,也是由多个 ...

  9. (第三章,第四章)http报文内的http信息,返回结果的http状态码

    第三章 http报文内的http信息 用于http协议交互的信息被称为http报文,包括请求报文和响应报文. 1.编码提升传输速率,在传输时编码能有效的处理大量的访问请求.但是编码的操作是计算机完成的 ...

随机推荐

  1. XML介绍

    XML [TOC] 1.XML简介 XML是Extend Markup Langue可扩展标签语言,标签由开发着自己定义 作用是: 1.描述带关系的数据(作为软件的配置文件):包含与被包含的关系 2. ...

  2. 第3章 Linux常用命令(5)_网络命令和挂载命令

    7. 网络命令 7.1 给用户发信息,以ctr+D保存结束 (1)write命令 命令名称 write 命令所在路径 /user/bin/write 执行权限 所有用户 语法 write <用户 ...

  3. 关于ipa和apk文件的解压

    移动互联网中,主要的两个平台是Android和ios,android上文件的安装包是后缀名为apk的文件,ios上文件的安装包是后缀名为ipa的文件,在本文分析一下这两种文件的特点,以及如何用程序去解 ...

  4. Nmap参数详解

    转自:http://blog.csdn.net/huangwwu11/article/details/20230795 Nmap--networkmapper,网络探测工具和安全/端口扫描器 nmap ...

  5. php 时间加减

    <?php date_default_timezone_set('PRC'); //默认时区 echo "今天:",date("Y-m-d",time() ...

  6. 系统修改利器XueTr

    Windows系统修改利器XueTr 周银辉 在Windows下如果遇到某些进程弄死结束不了,某些文件弄死删不掉,拷贝不出来 (可能是因为你没有管理员权限,可能是因为人家是病毒,可能是系统保护文件,可 ...

  7. Java里String.split需要注意的用法

    我们常常用String的split()方法去分割字符串,有两个地方值得注意: 1. 当分隔符是句号时("."),需要转义: 由于String.split是基于正则表达式来分割字符串 ...

  8. [web建站] 极客WEB大前端专家级开发工程师培训视频教程

    极客WEB大前端专家级开发工程师培训视频教程  教程下载地址: http://www.fu83.cn/thread-355-1-1.html 课程目录:1.走进前端工程师的世界HTML51.HTML5 ...

  9. Android5.0资源 colorAccent,colorPrimary,colorPrimaryDark

  10. OpenGL在Ubuntu 14.04 中的设置与编程

    在sudo apt-get install XXX,别的教程讲的很详细了. 编写好程序需要在shell中链接 g++ teapot.c -o teapot -lglut -lGL -lGLU 此处要注 ...