1,get 没有 post 更加安全
2,get 只能在url中可以添加参数 。post的参数在body中。
3,get参数的长度有限,post的参数长度无限制。
很可惜以上的三个区别都是错的,下面一个一个进行分析。
1,get 没有 post 更加安全
这是一种以五十步笑百步的言论,post 相对于 get 的安全仅仅体现在post将参数放在body中,用户看不到,
但是只要是稍微懂一点的用户就可以用抓包的方式进行抓取body参数。一样是不安全的。安不安全一切看你加密的程度。
2,get 只能在url中可以添加参数 。post的参数在body中。
在http协议中并没有这样的这样的规定,给get方法加入body参数,给post方法加入URL参数在计数上完全是可行的。
在HTML标准中找到了相似的说法,其实这只是html标准对于http协议的约定,不能作为get和post的区别。
3,get参数的长度有限,post的参数长度无限制。
http对 ge t和 post 的长度都没有限制,但是在业界有个 不成文的规定,就是将URL的长度控制再2k一下。
这样有利于提高效率。
总结:
其实 get 和 post 在 本质上并没有什么区别,都是基于TCP/IP 的连接,
只是由于http协议 和浏览器服务器具有不同的限制,导致出现不同特征。
GET和POST还有一个重大区别
GET产生一个TCP数据包;POST产生两个TCP数据包。
-
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
-
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。