【HTTP】二、HTTP协议的报文结构
HTTP有两类报文:请求报文和响应报文,由于 HTTP 是面向正文的(text-oriented),因此在报文中的每一个字段都是一些 ASCII码串,因而每个字段的长度都是不确定的。(HTTP2引入了二进制协议)
这两种报文的结构基本上是相同的,都是由三部分组成:开始行(用于区分是请求报文还是响应报文)、首部行(一些键值对,用以说明一些信息)、实体主体(请求报文一般不用,响应报文也可能不用)。
1、请求报文
请求报文的最主要特点是:开始行(请求行)有三个内容组成,即方法、请求资源的URL、HTTP的版本号。

URL和版本号很好理解,主要看一下方法,方法其实就是命令,对所请求的对象进行一些操作,请求报文的类型就是由所采用的方法决定的。
从HTTP/1.1开始,常用的方法有8种:

以下是一个请求报文的例子:
GET http://www.tsinghua.edu.cn/chn/yxsz/index.html HTTP/1.1
Connection:close (这是首部行的开始,说明使用非持久连接)
User-Agent:Mozilla/5.0 (表明用户带来是使用Netscape浏览器)
Accept-Language:cn (表明希望优先得到中文版本的文档)
(最后有一个空行)
2、响应报文
相对应的,对于响应报文来说,最主要的特点是:其开始行(也叫状态行)由三部分组成,即版本、状态码、解释状态码的简单短语。

而这里主要需要理解的就是状态码了,状态码都是三位数字,分为5大类共33种。
- 1xx 表示通知信息的,如请求收到了或正在进行处理。
- 2xx 表示成功,如接受或知道了。
- 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
- 4xx 表示客户的差错,如请求中有错误的语法或不能完成。
- 5xx 表示服务器的差错,如服务器失效无法完成请求。
常用状态码如下:
| 状态码 | 含义 |
|---|---|
| 100 | 请求已经接收,客户端可以继续发送请求 |
| 101 | 服务器已经收到并且理解了客户端的请求 |
| 200 | 一切正常 |
| 204 | 请求成功,无资源可返回 |
| 206 | 范围请求,请求范围内资源正常返回 |
| 301 | 永久重定向 |
| 302 | 暂时重定向,URL可能还会改变 |
| 400 | 请求存在语法错误 |
| 401 | 请求需要有通过HTTP认证的认证信息 |
| 403 | 禁止访问 |
| 404 | 资源没找到,not found |
| 500 | 服务端处理请求发生了错误,或web应用存在某些bug或临时的故障 |
| 503 | 服务器过载或者临时维护 |
| 504 | 网关超时,代理服务器等待应用服务器响应时的超时 |
以下是一个响应报文的例子:
HTTP/1.1 301 Moved Permanently (永久重定向)
Location:http://www.xyz.edu/ee/index.html
【HTTP】二、HTTP协议的报文结构的更多相关文章
- HTTP协议的报文结构
HTTP 有两类报文: (1) 请求报文----从客户向服务器发送请求报文,见图6-12(a). (2) 响应报文----从服务器到客户的回答,见图6-12(b). 由于 HTTP是面向文本的(tex ...
- HTTP协议报文结构及示例
HTTP基本架构 下面我们用一张简单的流程图来展示HTTP协议基本架构,以便大家先有个基本的了解. 9.png Web Client可以是浏览器.搜索引擎.机器人等等一切基于HTTP协议发起http请 ...
- 报文分析4、TCP协议的头结构
TCP协议的头结构 来源端口(2字节) 目的端口(2字节) 序号(4字节) 确认序号(4字节) 头长度(4位) 保留(6位) URG ACK PSH RST SYN PIN 窗口大小(2字节) 校验和 ...
- 报文分析5、UDP协议的头结构
UDP协议的头结构 源端口(2字节) 目的端口(2字节) 封报长度(2字节) 校验和(2字节) 数据 (1)源端口(Source Port):16位的源端口域包含初始化通信的端口号.源端口和IP地址的 ...
- HTTP 协议基础概念和报文结构
基础概念 1.WWW(World Wide Web,万维网)构建技术有3项: (1)把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文 ...
- HTTP协议图--HTTP 协议报文结构
1.HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文.请求端(客户端)的 HTTP 报文叫做请求报文:响应端(服务器端)的叫做响应报文.HTTP 报文本身是由多行(用 CR[car ...
- 接口测试01 - HTTP协议报文结构及示例
HTTP基本架构 用一张简单的流程图来展示HTTP协议的基本架构,以便先有个基础的了解. 1)Web Client可以是浏览器.搜索引擎等等一切基于HTTP协议发起http请求的工具. 2)Web S ...
- 报文分析3、ICMP协议的头结构
ICMP协议的头结构 类型(8位) 代码(8位) 校验和(8位) 类型或者代码 (1)类型:一个8位类型字段,表示ICMP数据包类型. (2)代码:一个8位代码域,表示指定类型中的一个功能.如果一 ...
- WebSocket原理与实践(二)---WebSocket协议
WebSocket原理与实践(二)---WebSocket协议 WebSocket协议是为了解决web即时应用中服务器与客户端浏览器全双工通信问题而设计的.协议定义ws和wss协议,分别为普通请求和基 ...
随机推荐
- echarts常用的配置项
最近使用echarts可视化的业务,但是有一些配置项需要修改,把这段时间的学习总结一下 1. 修改默认配置 a. 去掉分割线和网格线,在xAxis或者yAxis中设置 splitLine: { sho ...
- 扩展Puppet – 建立Puppet CA集群
扩展Puppet – 建立Puppet CA集群 (1 votes, average: 5.00 out of 5) 588 views 2012 年 3 月 4 日Puppet.运维ca.mast ...
- jsp九大内置对象及四个作用域【转】
1.Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以 获取用户提交的信息. 当Request对象获取客户提交的汉字字符时,会出现乱码问题,必 ...
- C#生成的后台文件 ***.vshost.exe
vshost是visual studio宿主应用程序,vs运行调试时是打开的其实是这个文件,这个程序可以让vs跟踪调试信息.而exe则可以直接打开,vs不会跟踪任何这个文件的运行情况.只要引用的程序集 ...
- (转)window.parent和window.opener区别
下面一段代码是关于window.parent和window.opener区别 来讲的,我们如果要用到iframe的值传到另一框架就要用到window.opener.document.getElemen ...
- [模板] KMP算法/Border
KMP 算法 KMP (Knuth-Morris-Pratt) 算法是一种在线性时间内匹配文本串和模式串的算法. 称字符串的 Border 集合为 \[ \operatorname {Border} ...
- Nowcoder 北师校赛 B 外挂使用拒绝 ( k次前缀和、矩阵快速幂打表找规律、组合数 )
题目链接 题意 : 中文题.点链接 分析 : 有道题是问你不断求前缀和后的结果 Click here 这道题问的是逆过程 分析方法雷同.可参考 Click here ----------------- ...
- Unity3D_(API)场景切换SceneManager
Unity场景切换SceneManager 官方文档:传送门 静态方法 创建场景 CreateScene Create an empty new Scene at runtime with the g ...
- R_Studio中对xls文件学生总成绩统计求和
我们发现这张xls表格是没有学生总分的,在xls文件中计算学生总分嫌麻烦时,可以考虑在R Studio中自定义R Script脚本来解决实际问题(计算每个学生的总成绩) .xls数据表中的数据(关键信 ...
- WordPress过滤器(Filters):apply_filters和add_filter
过滤器(Filters)对于WordPress来说是非常重要的,它极大地扩展了WordPress的定制能力,提高了WordPress的灵活性.无论是制作主题还是开发插件,我们基本上都会或多或少地使用到 ...