前言:本博文主要是在通过搜索引擎搜索后得到一些结果,刚开始接触HTTP协议对这个有点懵逼想记下来,而且在面试中总是遇到这个问题所以想要加深点印象,就当记个笔记。(这篇博文主要引用了该博主(http://blog.youkuaiyun.com/qq_26360877)的博文,如果有不当的请联系我进行删改,谢谢)
1.HTTP与服务器交互的方式总共有四种:put,delete,post,get,其实就是对服务器资源的的增删改查操作,而在日常我们主要就是使用get和post这两种方式访问服务器资源。
2.区别:
2.0:get效率高,post请求数据放在请求体中,因此安全性高。
2.1:get把请求的数据放在url上,即HTTP协议头上,并且因为浏览器对URL上有长度限制,所以get方式传递的参数一般都不会超过2kb;而post则是把请求数据放在request body上,理论上对他的大小是没做规定的。
2.2:get只产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
post产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
2.3:get在浏览器回退时不会再次重复请求数据,而post则会再次提交请求。
2.4:get请求会被浏览器主动cache,post则不会。
2.5:get只能进行URL编码,而post则可以用多种方式编码。
2.6:get的请求参数会被完整保留在浏览器历史中,post的参数则不会。
2.7:get只接受ASCII字符的参数的数据类型,post则没有限制。
3.应用上:get一般URL参数是固定的,因而适合用在商品之类的展示上,post因为数据不是明文的,安全性较好,因而一般用在登录注册验证上。