通俗易懂。HTTP请求行、请求头、请求体、响应行、响应头、响应体详解
一. HTTP请求报文解剖
HTTP Request :HTTP请求
Request Line:请求行
Header:请求头
Request Body:请求体
HTTP请求报文由3部分组成(请求行+请求头+请求体):
下面是一个实际的请求报文:
其中,①,②和③属于请求行;④属于请求头;⑤属于报文体
- ① 是请求方法,HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE,最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。
- ② 为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL
- ③ 是协议名称及版本号。
- ④ 是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
- ⑤ 是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。
对照上面的请求报文,我们把它进一步分解,你可以看到一幅更详细的结构图:
二. HTTP响应报文解剖
1. 组成部分
HTTP的响应报文也由三部分组成(响应行+响应头+响应体):
以下是一个实际的HTTP响应报文:
其中,①,②和③属于请求行;④属于请求头;⑤属于报文体
- ①报文协议及版本;
- ②状态码及状态描述;
- ③响应报文头,也是由多个属性组成;
- ④响应报文体,即我们真正要的“干货”。
2. 响应状态码
和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。
HTTP的响应状态码由5段组成:
1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...
2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。
200 OK
处理成功
303 See Other
我把你redirect到其它的页面,目标的URL通过响应报文头的Location告诉你。
304 Not Modified
告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊!
404 Not Found
说明没有找到页面,即客户端的请求到了服务器端,无法请求到数据, 可能是客户端的请求格式有错误,也可能是服务器端的资源被删除了。
500 Internal Server Error
看到这个错误,最好查一下服务端的日志,看看是哪里出了问题。
通俗易懂。HTTP请求行、请求头、请求体、响应行、响应头、响应体详解相关推荐
- 下面哪个字段是http请求中必须具备的_理解HTTP协议-HTTP协议详解总结
一.HTTP协议的演进 HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向 ...
- 【Markdown基础教程】强调语法(粗体,斜体,粗斜体)详解
大家好,今天我将带来对Markdown字体的详解 在这篇文章中,我们将学习Markdown的粗体,斜体和粗斜体 一.粗体 粗体有两种表示方法 方法一:两个星号(**) 粗体的英文是**bold**. ...
- C语言共用体(C语言union用法)详解
转载重点:共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员.图形分析影响过程 通过前面的讲解,我们知道结构体(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员.在C语 ...
- delphi接口带上请求头是什么意思_Python接口自动化之Token详解及应用
------·今天距2021年258天·------ 这是ITester软件测试小栈第113次推文 在上一篇Python接口自动化测试系列文章:Python接口自动化之cookie.session应用 ...
- 请求列出指定服务器上的可用功能失败_滥用 ESI 详解(上)
在进行安全性评估时,我们注意到了标记语言 Edge Side Includes (ESI)中的一个意外行为,这种语言用于许多流行的 HTTP 代理(反向代理.负载平衡器.缓存服务器.代理服务器).我们 ...
- 行逻辑链接的顺序表(压缩存储稀疏矩阵)详解
前面学习了如何使用三元组顺序表存储稀疏矩阵,其实现过程就是将矩阵中各个非 0 元素的行标.列标和元素值以三元组的形式存储到一维数组中.通过研究实现代码你会发现,三元组顺序表每次提取指定元素都需要遍历整 ...
- 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术
本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...
- mysql命令行查看表的触发器_Mysql事项,视图,函数,触发器命令(详解)
事项开启和使用 //修改表的引擎 alter table a engine=myisam; //开启事务 begin; //关闭自动提交 set autocommit=0; //扣100 update ...
- linux命令行语法cd用法,每天一个Linux命令之cd命令详解
Linux系统要学好其它命令则首先要学好cd命令的使用方法和技巧.下面由学习啦小编为大家整理了每天一个Linux命令之cd命令详解,希望对大家有帮助! 每天一个Linux命令之cd命令详解 cd命令用 ...
最新文章
- cmd连接oracle_Oracle -PLSQLDeveloper 13 数据库连接
- Python数据类型和分支循环
- Java线程池的拒绝策略
- 外国人看来也喜欢拜年
- Double Free浅析(泄露堆地址的一种方法)
- html5页面被键盘挡住,HTML5 虚拟键盘出现挡住输入框怎么办
- java friendly 子包,黑馬程序員 java 修飾符類型(public,protected,private,friendly)
- 他,TypeScript GitHub Star 上海第一,全国第四!GitHub 总标星超两万!
- SharpZipLib解压缩时中文名乱码[解决]
- 人工智能应用开发全流程的成本分析
- 水处理过滤器运行特性及选择原则浅谈
- linux btrfs raid0,Linux初学之btrfs文件系统及磁盘配额
- CRM系统创建营销活动
- 关于AlertDialog的小坑
- .mpp文件的使用技巧
- fastjson使用
- Android中管理代码基本工作流程
- 压缩感知稀疏基之离散余弦变换(DCT)和离散正弦变换(DST)
- JsonObject生成Json字符串有转意字符
- 数字签名、证书,RSA加密、解密