一,http协议的主要特点
1,简单快速
2,灵活
3,无连接:不会保持连接
4,无状态:在http协议中服务端无法区分客户端的状态,需要通过其他方式
二,http报文的组成部分
1,请求报文
1)请求行:http方法;url地址;协议;协议版本
2)请求头:key-value值(Host;Cache-Control;User-Agent;Connection;Content-Type;Cookie等)
3)空行:分隔请求头和请求体
4)请求体:请求参数
2,响应报文
1)状态行:协议,协议版本
2)响应头:key-value值(Server;Date;Content-Type;Connection等)
3)空行:分隔响应头和响应体
4)响应体:服务端返回的数据
三,http方法
四,post和get的区别
1,get在浏览器回退时是无害的,而post会再次提交请求
2,get产生的url地址可以被收藏,而post不可以
3,get请求会被浏览器主动缓存,而post不会,除非手动设置
4,get请求只能进行url编码,而post支持多种编码方式
5,get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留
6,get请求在url中传送的参数是有长度限制的(不同的浏览器限制不一样),而post没有限制
7,对参数的数据类型,get只接受ASCII字符,而post没有限制
8,get比post更不安全,因为参数直接暴露在url上,所有不能用来传递敏感信息
9,get参数通过url传递,post放在Request body中
五,http状态码
1xx:指示信息-表示请求已接收、继续处理
2xx:成功-表示请求已被成功接收
3xx:重定向-要完成请求必须进行更近一步的操作
4xx:客户端错误-请求有语法错误或请求无法实现
5xx:服务器错误-服务器未能实现合法的请求
六,什么是持久连接(http1.1版本才支持)
1,http协议才用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(http协议为无连接的协议)
2,当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服务端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接
七,什么是管线化
1,在持久连接的情况下,发起多次请求的顺序是,请求1=》请求2=》请求3=》响应1=》响应2=》响应3,这种情况为管线化
2,管线化机制通过持久连接完成,仅http/1.1支持此技术
3,只有get和head请求可以进行管线化,而post则有所限制
4,初次创建连接时不应启动管线机制,因为对方(服务器)不一定支持http/1.1版本的协议
5,管线化不会影响响应到来的顺序
6,http/1.1要求服务器端支持管线化,但并不要求服务器端也对相应进行管线化处理,只是要求对于管线化的请求不失败即可
7,由于上面提到的服务端问题,开启管线化很可能并不会带来大幅度的性能提升,而且很多服务器端和代理程序对管线化的支持并不好,因此现代浏览器如谷歌和火狐默认并未开启管线化支持
网友评论