get&post区别?

227 阅读3分钟

get & psot都是http请求类型

1. 发送的数据数量

get中,只可以发送有限数量的数据,因为数据是在URL中发送的.
post中,可以发送大量数据,因为数据是在正主题中(请求头)发送的.

2. 安全性

get方法   发送的数据不受保护,因为数据在URl栏中公开,无疑增加漏洞和黑客攻击的风险.
post方法  发送的数据是安全的,因为数据未在URl栏公开,还可以在其中使用多种编码技术,灵活具有弹性.   

3. 加入书签中

get查询的结果可以加入到书签中,因为它以URl的形式存在,而post查询的结果无法加入书签中.

4. 编码

在表单中使用get方法时,数据类型中只接受ASCII字符.
在表单提交时, post方法不绑定数据类型,并准许二进制和ASCII字符.

5.可变大小

get   方法中的可变大小约为 2000个字符.
post  方法最多准许8mb的可变大小.

6. 缓存

get   方法的数据可以缓存
post  方法的数据无法缓存     

7. 主要作用

get  方法要用于获取信息         即常用来用户查询信息,明文不能用于机密信息提交.
post 方法主要用于更新数据       即常用表单提交,甚至可以传输文件,没有传输限制,安全

补充知识

get请求传参长度的误区
 我们经常说get请求参数的大小存在限制,而 post 请求的参数大小是无限制的。
 实际HTTP协议从未规定GET/POST的请求长度限制是多少。
 对get请求参数的限制是来源与浏览器或web服务器,
    
浏览器或web服务器限制url的长度。为了明确这个概念,再次强调下面几点:
      1.HTTP 协议未规定 GET 和 POST 的长度限制
      2.GET 的最大长度显示是因为浏览器和 web 服务器限制了 URI 的长度
      3.不同的浏览器和 WEB 服务器,限制的最大长度不一样
      4.要支持 IE,则最大长度为 2083byte,若只支持 Chrome,则最大长度 8182byte     
     
get 和 post 请求在缓存方面的区别
      get 请求类似于查找的过程,用户获取数据,可以不用每次都与数据库连接,所以可以使用缓存。
      post 不同,post 做的一般是修改和删除的工作,所以必须与数据库交互,所以不能使用缓存。
      因此 get 请求适合于请求缓存。    
      缓存一般只适用于那些不会更新服务端数据的请求。
      一般 get 请求都是查找请求,不会对服务器资源数据造成修改,
      而 post 请求一般都会对服务器数据造成修改,
      所以,一般会对 get 请求进行缓存,很少会对 post 请求进行缓存。