HTTP协议的主要特点:
简单快速,灵活,无连接,无状态
HTTP报文的组成部分:
请求报文:请求行:请求方法 URL地址 协议名称或版本号
请求头: 键值对 服务端据此获取客户端的信息
空行: 分隔请求头和请求体
请求体: 通过请求体传值
响应报文: 状态行: 说明所请求的资源情况
响应头 : 描述服务器基本信息
空行 : 分隔响应头和响应体
响应体:服务端返回的数据
HTTP方法:
POST: 传输资源
GET: 获取资源
PUT:更新资源
DELETE:删除资源
HEAD:获得报文首部
POST和GET的区别:
GET在浏览器回退时是无害的,而POST会再次提交请求
GET产生的URL地址可以被收藏,而POST不可以
GET请求会被浏览器主动缓存,而POST不可以
GET请求只能进行url编码,而POST支持多种编码方式
GET请求参数会被完整保留在浏览器的历史记录里,而POST中的参数不会被保留
GET请求在URL中传送的参数是有长度限制的,而POST没有限制
对参数的数据类型,GET值接收ASCII字符,而POST没有限制
对参数的数据类型,GET只接收ASCII字符,而POST没有限制
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息
GET参数通过URL传递,POST放在Request body中
HTTP状态码:
1xx:指示信息-表示请求已接收,继续处理
2xx:成功-表示请求已被成功接收
3xx:重定向-要完成请求必须进行更进一步的操作
4xx:客户端错误-请求有语法错误或请求无法实现
5xx:服务器错误-服务器未能实现合法的请求
什么是持久连接:(1.1版本才支持)
HTTP协议采用请求-应答模式,当使用普通模式,即非Keep-Alive模式时,每个请求、应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议)
当使用Keep-Alive模式,(又称持久连接,连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后续请求时,Keep-Alive功能避免了建立或者重新建立连接
什么是管线化:
管线化机制通过持久连接完成,仅HTTP/1.1支持此技术
只有GET和HEAD请求可以进行管线化,而POST则有所限制
初次创建连接时不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议
HTTP/1.1要求服务器端支持管线化,但并不要求服务器端也对响应进行管线化处理,只是要求对于管线化的请求不失败即可
由于上面提到的服务器端问题,开启管线化很可能并不会带来大幅度的性能提升,而且很多服务器端和代理程序对管线化的支持并不太好,因此现代浏览器默认并为开启管线化支持