第一. http协议的主要特点
1.简单快速(每个资源也就是URL是固定的,在协议中处理是非常简单的,如果想访问哪个资源只需要输入url即可)
2.灵活(每一个http协议中会有一个头部分,会有一个数据类型,通过http协议就可以完成不同数据类型的传输)
3.无连接(连接一次就回断掉,不会保持连接)
4.无状态(客户端和服务端是两种身份,客户端想服务端请求一个图片,http帮你建立一个连接,然后中间传输,任务完成后,这次连接就会断开,下次连接,服务端无法区分和上次是不是用一身份)
第二. http报文的组成部分
1.请求报文:
1-1.请求行(包含http方法、页面地址、http协议以及版本)
1-2.请求头(包含key、value,告诉服务器我需要哪些内容,需要注意什么类型)
1-3.空行(告诉服务器遇见空行的时候下面就不再是请求头部分了)
1-4.请求体
2.响应报文:
2-1.状态行
2-2.状态头
2-3.空行
2-4.响应体
第三. http方法 — GET POST PUT DELETE HEAD(HEAD 是获取报文首部的)
第四. post和get的区别
1.post比get更加安全
2.传参方式不同,get在url上,post在request.body里
3.get在浏览器回退的时候不会再次提交请求,post会
4.get请求会被浏览器主动缓存,post只能手动
5.get请求的url可以被收藏,post不可以
6.get请求的参数会被浏览器留在历史记录,post不会
7.get请求的url传参是有长度限制的,一般是2k左右,post没有限制
第五.http状态码
1. 1**指示信息
2. 2**成功
2-1:200请求成功
2-2:206客户端发送了一个带有range范围的get请求,服务端根据这个范围截断原本数据并返回,多用于音频视频
3. 3**重定向
3-1:301所请求的页面已经转移到新的url
3-2:302所请求的页面已经临时转移到新的url
3-3:304告知客户端浏览器已经有缓存了,不用请求服务器
4. 4** 客户端错误
5. 5**服务端错误
第六.http持久连接 - Keep-Alive
1. http1.1才支持持久链接
2. 一般请求得到响应后会断开,下次重新连接
3. 启用Keep-Alive模式肯定更高效,性能更高。因为避免了建立/释放连接的开销
第七.http协议管线化
1. 持久连接的正常情况是 请求 -> 响应 -> 请求 -> 响应 ....依次不会中断
2. 管线化的意思是客户端把所有的请求打包一次性来请求,服务器也把所有的响应打包给客户端
3. 管线化机制是通过持久连接完成,所以http1.1才支持
4. 只有get和head请求可以管线化,post有所限制
5. 管线化必须建立在服务端支持持久连接的基础上才可以实现