接口测试01 - HTTP协议报文结构及示例
HTTP基本架构
用一张简单的流程图来展示HTTP协议的基本架构,以便先有个基础的了解。
1)Web Client可以是浏览器、搜索引擎等等一切基于HTTP协议发起http请求的工具。
2)Web Server可以是任何的能解析http请求,并返回给Web Client可识别的响应的服务,常见
的有apache、nginx、IIS等等web服务器。
浓缩的都是精华,看下最简洁的HTTP交互图:
HTTP报文结构
1)请求报文
HTTP请求报文由请求行、请求头、空行和请求内容4个部分构成。
请求行:
由请求方法字段、URL字段、协议版本字段三部分构成,它们之间由空格隔开。常用
的请求方法有:GET、POST、HEAD、PUT、DELETE等等。
请求头:
请求头由key/value对组成,每行为一对,key和value之间通过冒号(:)分割。请求头的
作用主要用于通知服务端有关于客户端的请求信息。
典型的请求头有:
User-Agent:生成请求的浏览器类型
Accept:客户端可识别的响应内容类型列表;星号*用于按范围将类型分组。*/*表示可
接受全部类型,type/*表示可接受type类型的所有子类型。
Accept-Language:客户端可接受的自然语言
Accept-Encoding:客户端可接受的的编码压缩格式
Accept-Charset:可接受的字符集
Host:请求的主机名,允许多个域名绑定同一IP地址
connection:连接方式(close或keeplive)
Cookie:存储在客户端的扩展字段
空行:
最后一个请求头之后就是空行,用于告诉服务端以下内容不再是请求头的内容了。
请求内容:
请求内容主要用于POST请求,与POST请求方法配套的请求头一般有
Content-Type(标识请求内容的类型)和Content-Length(标识请求内容的长度)
2)响应报文
HTTP响应报文由状态行、响应头、空行和响应内容4个部分组成。
状态行:
由HTTP协议版本、状态码、状态码描述三部分构成,它们之间由空格隔开。
状态码由3位数字组成,第一位标识响应的类型,常用的5大类型状态码如下:
1xx:表示服务器已经接收了客户端的请求,客户端可以继续发送请求
2xx:表示服务器已经成功接收到请求并进行处理
3xx:表示服务器要求客户端重定向
4xx:表示客户端的请求有非法内容
5xx:表示服务器未能正常处理客户端的请求而出现意外的错误
常见状态码说明:
200 OK:表示客户端请求成功
400 Bad Request:表示客户端请求有语法错误,不能被服务器端解析
401 Unauthonzed:表示请求未经授权,该状态码必须与WWW-Authenticate报文头一起使用
404 Not Found:请求的资源不存在,例如输入错误的url
500 Internal Server Error:表示服务器发生了不可预期的错误,导致无法完成客户端的请求
503 Service Unavailable:表示服务器当前不能处理客户端的请求,在一段时间后服务器可能恢复正常。
响应头:
一般情况下,响应头会包含以下,甚至更多的信息。
Location:服务器返回给客户端,用于重定向到新的位置
Server:包含服务器用来处理请求的软件信息及版本信息
Vary:标识不可缓存的请求头列表
Connection:连接方式。
对于请求端来讲:close来告诉服务端,断开连接,不用等待后续的请求了。keeplive则是告诉服务端,
在完成本次请求的响应后,保持连接,等待本次连接后的后续请求。
对于响应端来讲:close表示连接已经关闭。keeplive则表示连接保持中,可以继续处理后续请求。
Keep-Alive表示如果请求端保持连接,则该请求头部信息表明期望服务端保持连接多长时间(秒),
例如300秒,应该这样写Keep-Alive:300
空行:
最后一个响应头之后就是空行,用于告诉请求端以下内容不再是响应头的内容了。
响应内容:
服务端返回给请求端的文本信息。
HTTP报文示例
在Firefox下用firebug随意抓取一个HTTP包和上文的报文结构做下一一对应的关系图,以便了解实际的
包和标准报文结构的对应关系。
接口测试01 - HTTP协议报文结构及示例的更多相关文章
- HTTP协议报文结构及示例
HTTP基本架构 下面我们用一张简单的流程图来展示HTTP协议基本架构,以便大家先有个基本的了解. 9.png Web Client可以是浏览器.搜索引擎.机器人等等一切基于HTTP协议发起http请 ...
- HTTP协议图--HTTP 协议报文结构
1.HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文.请求端(客户端)的 HTTP 报文叫做请求报文:响应端(服务器端)的叫做响应报文.HTTP 报文本身是由多行(用 CR[car ...
- 计算机网络 之 TCP协议报文结构
前言:上学期实训课,由于要做一个网络通信的应用,期间遇到各种问题,让我深感计算机网络知识的薄弱.于是上网查找大量的资料,期间偶然发现了roc大神的博客,很喜欢他简明易懂的博文风格.本文受roc的< ...
- HTTP 协议基础概念和报文结构
基础概念 1.WWW(World Wide Web,万维网)构建技术有3项: (1)把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文 ...
- TCP/IP协议头部结构体(网摘小结)(转)
源:TCP/IP协议头部结构体(网摘小结) TCP/IP协议头部结构体(转) 网络协议结构体定义 // i386 is little_endian. #ifndef LITTLE_ENDIAN #de ...
- modbus tcp数据报文结构
modbus tcp数据报文结构 请求:00 00 00 00 00 06 09 03 00 00 00 01 响应:00 00 00 00 00 05 09 03 02 12 34 一次modbus ...
- TCP/IP协议头部结构体
TCP/IP协议头部结构体(转) 网络协议结构体定义 // i386 is little_endian. #ifndef LITTLE_ENDIAN #define LITTLE_ENDIAN (1) ...
- Django框架01 / http协议、web框架本质
Django框架01 / http协议.web框架本质 目录 Django框架01 / http协议.web框架本质 1.http协议 1.1 http协议简介 1.2 什么是http协议 1.3 H ...
- HCNP Routing&Switching之IS-IS报文结构和类型
前文我们了解了IS-IS动态路由协议基础相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15249328.html:今天我们来聊一聊IS-IS动态路由协 ...
随机推荐
- ViewFlow增强onItemClick功能及ViewFlow AbsListView源代码分析
先看实现效果,上图: ViewFlow是一个非常好用的,用于不确定item个数的水平滑动切换的开源项目. 可是从github上下载的ViewFlow事实上是不支持onItemClick功能的,tou ...
- hive impala C++ Java垃圾回收 Garbage Collection GC
hive impala impala 推荐每个节点内存 2^7~2^8GB Impala与Hive的比较 - 文章 - 伯乐在线 http://blog.jobbole.com/43233/ &l ...
- Remove FileUtil#copyMerge
[HADOOP-12967] Remove FileUtil#copyMerge - ASF JIRA https://issues.apache.org/jira/browse/HADOOP-129 ...
- td 中设置超出宽度显示省略号失效
td测试内容超出显示省略号时,结果没有显示省略号,而是一直往后显示,且超出了td大小,强行挤大了table. 原因是因为td默认不换行. 解决方法: 1.强制td换行. IE加上word-break: ...
- 恢复MySQL数据库删除的数据
在日常运维工作中,对于数据库的备份是至关重要的!数据库对于网站的重要性使得我们对 MySQL 数据库的管理不容有失!然而是人总难免会犯错误,说不定哪天大脑短路了,误操作把数据库给删除了,怎么办? 下面 ...
- idea 设置背景图片
按下 Ctrl+Shift+A 你会看到一个对话框 在里面输入 Set Background Image 进入设置背景图片窗口 设置背景图,点击确定即可 就一个好看,强大的编程工具了
- WebStorm配置SVN
下载SVN客户端管理工具TortoiseSVN-1.8.5.25224-x64-svn-1.8.8,选择合适的Windows版本 配置项目目录,对应的VCS为Subversion 设置Subversi ...
- wukong引擎源码分析之索引——part 1 倒排列表本质是有序数组存储
searcher.IndexDocument(0, types.DocumentIndexData{Content: "此次百度收购将成中国互联网最大并购"}) engine.go ...
- UVA-10391(字符串检索)
题意: 给定一个字典,要求找出所有的复合词; 思路: 用map把词都存起来,再把词拆开看是否是出现过的单词; AC代码: #include <bits/stdc++.h> #include ...
- 【NOIP 2003】 加分二叉树
[题目链接] 点击打开链接 [算法] 树形DP即可 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 50 in ...