一、什么是HTTP?
HTTP是一种“超文本传输协议”,英文全称“Hypertext Transfer Protocol”。
HTTP的多种应用及特性
1、无连接性
HTTP默认是无连接的,即每个请求都是一个独立的事务。当服务器完成对客户端请求的响应后,会立即关闭连接,不会保持长连接。这种无连接性可以节省服务器资源,但也会增加每个请求的延迟,因为需要重新建立连接。
2、无状态性
HTTP协议是无状态的,即服务器不会保存客户端的状态信息。每个请求都是独立的,服务器不会记住之前的请求。为了处理这个问题,引入了Cookie和Session机制,通过在客户端和服务器之间传递标识符来跟踪会话状态。
3、请求-响应模型
HTTP通过请求-响应模型进行通信。客户端发送一个HTTP请求,服务器接收并处理请求,并返回一个HTTP响应。响应包含响应状态码、响应头和响应体。
4、支持多种请求方法
HTTP定义了多种请求方法,最常见的是GET和POST。其他常见的方法有PUT、DELETE、HEAD等,用于不同的操作和目的。
⚪GET通常用来获取资源。
⚪POST通常用于发送请求信息给服务器。
⚪PUT是幂等的POST,无论你发送多少次相同的 PUT 请求,只要请求的主体内容相同,服务器上的资源状态应该是一致的。例如多次提交相同的博客文章 PUT 请求,最终只会创建一个文章资源,而POST请求发送给服务器就会创建多个相同的文章资源。
⚪HEAD也可以用来接收资源,其不接收响应,通常用来探测资源、优化性能以及做安全性的校验。
⚪DELETE通常用于删除服务器的资源。
5、缓存机制
HTTP协议存在着缓存机制,强缓存与协商缓存。其优势是直接从本地缓存获取资源,而不需要每次都向服务器发送请求减少了网络延迟和服务器负载从而减少网络延迟以及负载。当资源被强缓存时,客户端在缓存有效期内直接从本地缓存中获取资源,不会向服务器发送请求。当强缓存不存在时,客户端就会在请求头中添加协商缓存的信息(If-Modified-Since和If-None-Match),向服务器发送请求。服务器根据请求头中的信息判断资源是否有更新。如果没有更新,返回 304 状态码,客户端继续使用本地缓存;如果有更新,返回新的资源和 200 OK 状态码,客户端更新本地缓存。
HTTPS和HTTP协议的区别在哪?
1、安全性
⚪HTTPS经过了SSL/TLS加密,以确保数据在传输过程中不被窃取或者篡改。
⚪HTTP的数据以明文的形式传输,容易被截获和窥视。
2、端口号
⚪HTTPS的默认端口号为443。
⚪HTTP的默认端口号为80。
3、效率
⚪HTTPS因为进行了加密,还需要进行解密等过程,会增加一定的连接时间。同时也会消耗服务器更多的资源。
⚪HTTP没有加密解密的过程,因此执行效率相对较高。
HTTP的组成
一个HTTP请求由三部分组成:请求行、请求头以及请求体。
⚪请求行:由请求方法、URL以及协议版本组成。
⚪请求头:通常包含请求的其它信息,如User-Agent(包的来源)-判断是手机还是哪种浏览器等的请求、Content-Type(内容类型)-判断是Json格式还是键值对格式等、Authorization(验证身份)-服务器可以根据 “Authorization” 头中的信息来验证请求者的身份,决定是否允许其访问特定的资源。
⚪请求体:用于存放需要在请求里传输的数据。GET请求通常请求体为空。注意(GET参数通常在URL后面,POST传参既可以放在请求体中也可以放在URL后面)。
一般抓包的方式有很多种,可以使用F12直接查看请求和响应,可以使用很多种第三方软件进行抓包,如Fiddler、Charles等工具。一般这种工具除了做抓包,其还有其他功能,如做“弱网测试”、“重放造数据”等。不过需要注意的跟之前提到的一样,抓取HTTPS的包需要在第三方软件安装证书才可以进行抓取HTTPS的包。
Fiddler是一款开源且免费使用简单的第三方工具且支持安装插件,可拓展性和可视化更强大,不过只能在Windows上使用。
Fiddler下载官网: Fiddler官方路径下载
Charlse和Fiddler功能类似,不过Charles做弱网测试功能会更为强大,可以模拟网络波动情况以及设置丢包率,并且可以在Mac和Windows系统上使用,不过只能每天免费使用一个小时,然后需要收费。
Charles下载官网:Charles官方路径下载
HTTP的应用
HTTP请求和响应广泛应用在Web开发之中,前端给后端发送一个请求后,后端就响应这个请求,执行相应的一些操作然后再把处理好的数据传回给前端。这样更好的使得前后端进行了分离,能更为高效的管理和维护项目。
常用的模拟发送HTTP请求的第三方工具有JMeter、Postman、APIFox等。
感兴趣可以点击我的个人主页,后续有关于JMeter等工具使用的笔记更新。