- GET和POST是HTTP请求的两种基本方法,HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。
- 最直观的区别是:GET把参数包含在URL中,POST通过request body传递参数。
- 数据量:GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般默认为不受限制。
- 安全性:传统的比较都是觉得GET安全性非常低,POST安全性较高。因为GET请求的数据会暴露在地址栏中,而POST请求则不会。
- 效率:GET的执行效率比POST方法好。GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。 因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。那是否用get替换post? 不行,因为:
GET与POST都有自己的语义,不能随便混用。
据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
形象解释参考get与post的区别
建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;