get和post的区别

第一种说法:

       get是用于获取数据的;post一般用于将数据发给服务器之用。

第二种说法:最普遍的答案--------(这只是HTML标准对HTTP协议的用法有约定。)

      1、GET使用url或Cookie传参。而POST将数据放在BODY中。

     2、GET的URL会有长度上的限制,而POST的数据则可以非常大。

     3、POST比GET更安全,因为数据在地址栏上不可见。

正确的是:GET和POST与数据如何传递没有关系。GET和POST是有HTTP协议定义的。在HTTP协议中,Method和Data(URL,Body,Header)是正交的两个概念,也就是说,使用哪个Method与应用层的数据如何传输是没有相互关系的。

      HTTP没有要求,如果Method是POST数据就要放在BODY中。也没有要求,如果Method是GET,数据(参数)就一定要放在URL中而不能放在BODY中。

现代的Web Server都是支持GET中包含BODY这样的请求。虽然这种请求不可能从浏览器发出,但是现在的Web Server又不是只给浏览器用,已经完全超出了HTML服务器的范畴。

     HTTP协议对GET和POST都没有对长度的限制,HTTP协议明确地指出了,HTTP头和body都没有长度的要求,而对于URL长度上的限制,主要有两方面的原因:

  1. 浏览器。因为早期的浏览器会对URL长度做限制。(行内人士认同:IE对URL长度会限制在2048个字符内)

 2. 服务器。URL太长,对服务器处理也是一种负担。原本一个会话的没有多少数据,现在如果有人恶意的构造几个几M大小的URL,并不停地访问你的服务器。服务器的最大并发数显然会下降。另一种攻击方式是,把告诉服务器Content-Length是一个很大的数,然后只给服务器发一点数据

安全不安全跟GET、POST是没有关系的。

     

       

原文地址:https://www.cnblogs.com/wangshichuan/p/3995556.html