web前端 之 HTTP协议类

HTTP协议的主要特点

1、简单快速:每个URI(统一资源符)是固定的,比如图片、网址,所以HTTP协议是比较简单快速的,使用的时候直接将URI贴上去即可访问
2、灵活:每个HTTP协议都有一个请求头,有一个数据类型,通过一个http协议就可以完成不同数据类型的传输
3、无连接:http协议在连接一次之后就会断掉,不会保持一直连接
4、无状态:因为http协议是无连接的,所以http在连接、传输之后就会断掉,如果连续传输两次http,光靠http是无法识别身份的(状态区分是服务器通过增加session做到的)

HTTP报文的组成部分

1、请求报文
请求行:http方法、网址、http、版本、
请求头:通过key/value告诉服务器需要注意什么数据类型
空格:说明请求部分已经结束
请求体:客户端请求的数据
web前端 之 HTTP协议类
2、响应报文
响应行:http、版本、状态
响应头:key/value
空格
响应体:服务端返回来的数据
web前端 之 HTTP协议类

HTTP方法

GET:获取资源
POST:传输资源
PUT:更新资源
DELETE:删除资源
HEAD:获取报文首部

POST和GET的区别

1、浏览器回退的时候GET是无害的,不会再次提交请求,而POST会重新提交请求
2、GET请求的url是可以被浏览器收藏的,而POST不可以
3、GET请求会被浏览器自动缓存,而POST不会,需要手动设置
4、GET请求会被保存在浏览器的历史记录里,而POST不可以
5、GET请求在URL中的传递的参数是有长度限制的,而POSTt没有
6、GET传递的参数会暴露在url上,不能放置敏感信息,POST放置在Request body中

HTTP状态码

web前端 之 HTTP协议类
web前端 之 HTTP协议类
web前端 之 HTTP协议类

持久连接

HTTP是支持持久连接的,但是http1.1版本才支持
持久连接和非持久连接的区别:
非持久连接是客户端与服务端建立连接,完成之后就会断开连接
持久连接中客户端与服务端建立连接不会立即中断,当客户端后续有请求时避免了再次建立连接

管线化

1、在使用持久连接的时候,请求一次响应一次
请求1 --> 响应1 --> 请求2 --> 响应2
2、在使用管道化时,请求一般是打包好之后发送给服务端,服务端打包所有响应给客户端
请求1 --> 请求2 --> 请求3 --> 响应1 --> 响应2 --> 响应3
3、特点
(1)管线化是基于持久连接的,所以只有http1.1版本才支持
(2)只有GET和HEAD请求支持管线化,POST不支持
(3)初次创建连接不支持开启管线化,因为不确定服务端是不是开启了http1.1版本