get和post

导读:大部分APP都依赖于网络通讯,对于开发者来讲,基于网络通讯的开发无疑是必须掌握的。HTTP通讯做为目前计算机主要的通讯协议,是企业面试当中必问的。对于HTTP通讯的概念,本文不做说明,我将在后续的文章中详细介绍。本文主要讲讲热点问题,就是HTTP网络请求中GET和POST方法的区别。面试

1、区别

1.效率

  • GET的意思是『得』,从服务器获取数据(也能够上传数据,参数就是),效率较高
  • POST的意思是『给』,但能够向服务器发送数据和下载数据,效率不如GET

2.缓存

  • GET 请求可以被缓存,默认的请求方式也是有缓存的
  • POST请求默认不会缓存
  • 缓存是针对URL来进行缓存的,GET请求因为其参数是直接加在URL上-的,一种参数组合就有一种URL的缓存,能够根据参数来进行一一对应,重复请求是幂等的(不论请求多少次,结果都同样);
  • 而POST请求的URL没有参数,每次请求的URL都相同,数据体(HTTPBody)可能不一样,没法一一对应,因此缓存没有意义

3.安全性

  • GET的全部参数所有包装在URL中,明文显示,且服务器的访问日志会记录,很是不安全
  • POST的URL中只有资源路径,不包含参数,参数封装在二进制的数据体中,服务器也不会记录参数,相对安全。全部涉及用户隐私的数据都要用POST传输

POST的安全是相对的,对于普通用户来讲他们看不到明文,数据封装对他们来讲就是屏障。可是对于专业人士,它们会抓包会分析,没有加密的数据包对他们来讲也是小case。因此POST仅仅是相对安全,惟有对数据进行加密才会更安全。固然加密也有被破解的可能性,理论上全部的加密方式均可以破解,只是时间长短的问题。而加密算法要作的就是使得破解须要的时间尽可能长,越长越安全。因为咱们也须要解密,加密算法太过复杂也并不是好事,这就要结合使用状况进行折中或者足够实际使用便可。绕的有点远,具体的话,我将在后续的文章之中介说起,并介绍一些经常使用的加密算法。算法

4.数据量

HTTP协议中均没有对GET和POST请求的数据大小进行限制,可是实际应用中它们一般受限于软硬件平台的设计和性能。后端

  • GET:不一样的浏览器和服务器不一样,通常限制在2~8K之间,更加常见的是1k之内
  • POST方法提交的数据比较大,大小靠服务器的设定值限制,PHP默认是2M(具体的话你们之后看后端给的开发文档就好了)


文/高海滨(简书做者) 原文连接:http://www.jianshu.com/p/5e55a734e9a2 著做权归做者全部,转载请联系做者得到受权,并标注“简书做者”。
相关文章
相关标签/搜索