【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协议,分别为普通请求和基 ...
随机推荐
- https://github.com/zabbix/zabbix-docker 安装
docker-compose -f ./docker-compose_v3_centos_mysql_latest.yaml up -d 解压文件,运行即可
- ASP.NET MVC5入门指南(1)*入门介绍
以下指南说明了什么是ASP.NET MVC,并说明了如何入门. ASP.NET MVC 5入门 入门 添加控制器 添加视图 添加模型 创建连接字符串并使用SQL Server LocalDB 从控制器 ...
- Python 模块 Ⅱ
搜索路径 当你导入一个模块,Python 解析器对模块位置的搜索顺序是: 1.当前目录 2.如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录. 3.如果都 ...
- 16.html转pdf的一个小示例
def get_html(request): data = {"name": "alex", "age": 12, "sex&qu ...
- java实现大文件上传
文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用 ...
- hdu 1796 How many integers can you find 容斥第一题
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- HGOI20190810 省常中互测3
Problem A 夏洛特 若当前处在点$(x,y)$下一时刻可以向该点四周任意方向走动一步, 初始在$(0,0)$是否存在一条合法的路线满足下列$n$个限制: 每一个限制形如$t_i , x_i ...
- Luogu2000 拯救世界
题目链接:戳我 生成函数的入门题吧. 我们可以把条件限制转化为生成函数,然后用第i项的系数来表示一共使用n块石头的方案个数. (你问我为什么?你可以自己演算一下,或者去看大佬的博客-->这里面讲 ...
- ZOJ-3777-Problem Arrangement(状压DP)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3777 题意: 输入n和m,接下来一个n*n的矩阵,a[i][j]表示第i道 ...
- akka 的集群访问方式
akka 中采用startProxy分区代理 访问 ,跟使用shardRegion 来访问的区别 这两种访问方式是不是重了呢. 而另外这是一个单例代理 private fun startUniver ...