get和post请求的区别
很多面试官都喜欢问这个问题,以前面试的时候总结了post和get的相关问题,希望能够大家,如有问题请大佬指教哈:
post和get区别??
- get是从服务器上获取数据,post是向服务器传送数据;
- get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB;
- 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据;
- get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址,用户看不到这个过程;
- get安全性非常低,post安全性较高。但是执行效率却比Post方法好;
- get产生一个TCP数据包;post产生两个TCP数据包;
- get和post都是HTTP协议的请求方式。
因此会建议:在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式。
-—————————————————
-—————————————————-
实际上真的只有这么多吗??真的有区别吗??
什么是get和post?
它们是HTTP协议中的两种请求方式,而HTTP是基于 TCP/IP的,get/post都是TCP链接,所以get和post的作用是一样的,如果你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。
get请求方式:浏览器会把http header和数据一并发送出去,服务器响应200。
post请求方式:浏览器先发送header,服务器响应100 continue,浏览器再发送数据,服务器响应200 (返回数据)。
从上面可以分析出,post发生了两次请求,而get是一次请求,从表面看的话get会快一点,为什么不能直接用get替换所有的post呢?
第一:GET与POST都有自己的语义,不能随便混用;
第二:在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点;
第三:并不是所有浏览器都会在POST中发送两次包,目前就Firefox只发送一次。
还没有评论,来说两句吧...