接口测试学习1:http协议
1.http协议的概念和特点
超文本传输协议。请求、响应协议,实现客户端和服务器之间的数据传输
特点:
1.一问一答(必须由客户端发起请求)
2.http协议无状态,无记忆功能(上一个请求和下一个请求无关联)
小知识:http和https协议的区别
- https协议 = http + SSL/TSL协议(安全协议)
- 端口不同:http-80 https-443
- http协议免费申请 https需要证书认证(更安全)
2.请求报文及响应报文格式
2.1 请求报文:请求行+请求头+空行+请求数据
- 请求行:请求方式+url+协议/版本号
如:CONNECT api.bilibili.com:443 HTTP/1.1
完整的url—— http或https:// ip地址.域名/ 接口路径地址
- 请求头:通过键值对的方式进行存储
如:
Host: api.bilibili.com:443
Connection: keep-alive
- 空行
- 请求数据(没有则为空行)
2.2 响应报文:响应行+响应头+空行+响应数据
- 响应行:协议/版本号+状态码+返回信息
如:HTTP/1.1 200 Connection Established
常见的状态码:详细见此文
1xx-信息状态 2xx-成功 3xx-重定向 4xx-客户端错误 5xx-服务器错误
- 响应头:通过键值对的方式进行存储
如:
FiddlerGateway: Direct
StartTime: 16:46:00.160
Connection: close
- 空行
- 响应数据(没有则为空行)
3.常见问题
问题一、 http的请求方法有哪些?其中get和post的区别?
答:GET,POST, HEAD, OPTIONS,PUT, DELETE, TRACE 和 CONNECT 方法。
get和post区别:
一般来说GET是获取数据,POST是提交数据的。但是因为GET和POST都是HTTP的方法,HTTP又是是基于TCP/IP的关于数据在万维网中 如何让通讯的协议。所以本质上来说GET和POST请求是没有区别 的,都是TCP链接。他们能做的事情是一样的。
GET传输数据的时候是在URL地址中的、对所有人都是是可见的、是不安全的、是有浏览器缓存记录的。所以说GET是不安全的,发送密码等数据的时候不要用GET传输。
GET只能传输ASCLL字符,不能进行编码。
POST传输的时候是放在HTTP的请求体之中的,并且是经过urlencode编码的所以是相对安全的。
POST是没有对数据类型的限制的,二进制数据也是可以的。
HTTP协议并没有对GET和POST的长度做限制,其实是浏览器限制了他们传输大小。
URL地址是有长度限制的,浏览器不同长度限制的具体数值也是不一样的。比如IE是2083字节。需要注意的是这些仅仅是URL地址栏的长度限制。
理论上来说POST的长度是没有限制的,但是受服务器的配置限制或者内存大小的限制,造成了实际开发中POST也是有数据长度的限制的。
问题二、http的状态码有哪些?
答:常用的状态码如——200:请求成功、302:重定向、403:服务器拒绝请求、404:服务器找不到请求的网页、503:服务不可用
问题三、http的请求头部有哪些?
请求头名称 作用
Host 主机IP地址或域名
User-Agent 客户端相关信息,如操作系统,浏览器等信息
Accept 指定客户端接收信息类型,如image/jpg等
Accept-Charset 客户端接收的字符集
Accept-Encoding 可接受的内容编码
Accept-Language 接收的语言
Authorization 客户端提供给服务器,进行权限认证的信息
Cookie 携带的Cookie信息
Referer 当前文档的URL, 防止盗链
Content-Type 实体头内容类型
Content-Length 数据长度
Cache-Control 缓存机制
Pragma 防止页面被缓存
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)