原文地址:http://www.cnblogs.com/logsharing/p/8448446.html
生动有趣,建议一览!
GET和POST本质上就是TCP链接,并无差别。
只是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
如:(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。又如用GET服务,在request body传入数据,不同服务器的处理方式也是不同的,有些服务器直接忽略。
所以,get和post的那些所谓的区别不过是因为链接的完整性和浏览器,服务器对他们的处理方式的区别。
GET和POST的真正区别只是TCP数据包的个数。
GET请求产生一个TCP数据包;POST请求产生两个TCP数据包。
对于GET,浏览器会把header和data一并发送出去,服务器响应200;
对于POST,浏览器先发送header,服务器响应100,浏览器再发送data,服务器响应200。
例外:并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
GET和POST的使用建议:
- get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
- 在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;