一. 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&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1&param2=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请求行、请求头、请求体、响应行、响应头、响应体详解相关推荐

  1. 下面哪个字段是http请求中必须具备的_理解HTTP协议-HTTP协议详解总结

    一.HTTP协议的演进 HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向 ...

  2. 【Markdown基础教程】强调语法(粗体,斜体,粗斜体)详解

    大家好,今天我将带来对Markdown字体的详解 在这篇文章中,我们将学习Markdown的粗体,斜体和粗斜体 一.粗体 粗体有两种表示方法 方法一:两个星号(**) 粗体的英文是**bold**. ...

  3. C语言共用体(C语言union用法)详解

    转载重点:共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员.图形分析影响过程 通过前面的讲解,我们知道结构体(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员.在C语 ...

  4. delphi接口带上请求头是什么意思_Python接口自动化之Token详解及应用

    ------·今天距2021年258天·------ 这是ITester软件测试小栈第113次推文 在上一篇Python接口自动化测试系列文章:Python接口自动化之cookie.session应用 ...

  5. 请求列出指定服务器上的可用功能失败_滥用 ESI 详解(上)

    在进行安全性评估时,我们注意到了标记语言 Edge Side Includes (ESI)中的一个意外行为,这种语言用于许多流行的 HTTP 代理(反向代理.负载平衡器.缓存服务器.代理服务器).我们 ...

  6. 行逻辑链接的顺序表(压缩存储稀疏矩阵)详解

    前面学习了如何使用三元组顺序表存储稀疏矩阵,其实现过程就是将矩阵中各个非 0 元素的行标.列标和元素值以三元组的形式存储到一维数组中.通过研究实现代码你会发现,三元组顺序表每次提取指定元素都需要遍历整 ...

  7. 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术

    本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...

  8. mysql命令行查看表的触发器_Mysql事项,视图,函数,触发器命令(详解)

    事项开启和使用 //修改表的引擎 alter table a engine=myisam; //开启事务 begin; //关闭自动提交 set autocommit=0; //扣100 update ...

  9. linux命令行语法cd用法,每天一个Linux命令之cd命令详解

    Linux系统要学好其它命令则首先要学好cd命令的使用方法和技巧.下面由学习啦小编为大家整理了每天一个Linux命令之cd命令详解,希望对大家有帮助! 每天一个Linux命令之cd命令详解 cd命令用 ...

最新文章

  1. cmd连接oracle_Oracle -PLSQLDeveloper 13 数据库连接
  2. Python数据类型和分支循环
  3. Java线程池的拒绝策略
  4. 外国人看来也喜欢拜年
  5. Double Free浅析(泄露堆地址的一种方法)
  6. html5页面被键盘挡住,HTML5 虚拟键盘出现挡住输入框怎么办
  7. java friendly 子包,黑馬程序員 java 修飾符類型(public,protected,private,friendly)
  8. 他,TypeScript GitHub Star 上海第一,全国第四!GitHub 总标星超两万!
  9. SharpZipLib解压缩时中文名乱码[解决]
  10. 人工智能应用开发全流程的成本分析
  11. 水处理过滤器运行特性及选择原则浅谈
  12. linux btrfs raid0,Linux初学之btrfs文件系统及磁盘配额
  13. CRM系统创建营销活动
  14. 关于AlertDialog的小坑
  15. .mpp文件的使用技巧
  16. fastjson使用
  17. Android中管理代码基本工作流程
  18. 压缩感知稀疏基之离散余弦变换(DCT)和离散正弦变换(DST)
  19. JsonObject生成Json字符串有转意字符
  20. 数字签名、证书,RSA加密、解密

热门文章

  1. 高性能、低成本的高防 IP 产品能现实吗?
  2. 程序员计算手机分辨率比例
  3. Django模版(三)
  4. WebRTC的现状和未来:专访W3C WebRTC Chair Bernard Aboba(上)
  5. Xilinx发布实时视频编码服务器
  6. 数据结构与算法之花费铜板最小和利润最大题目
  7. JVM之堆Heap参数调优入门
  8. 腾讯成本优化黑科技:整机CPU利用率最高提升至90%
  9. 首届“腾讯云+社区开发者大会”正在直播!
  10. Python—进程、线程、协程