1,大多数浏览器通常都会限制url长度在2K个字节,而大多数服务器最多处理64K大小的url。

如果你用GET服务,在request body偷偷藏了数据,有些服务器直接忽略。
所以,虽然GET可以带request body,也不能保证一定能被接收到。
GET和POST本质上就是TCP链接,并无差别。
但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

2,GET产生一个TCP数据包;POST产生两个TCP数据包。

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。

但是:

GET与POST都有自己的语义,不能随便混用。另据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。