GET和POST的区别——[面试系列]

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20264581/article/details/83542697

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。

1.url可见性:
get,参数url可见
post,url参数不可见

**get把请求的数据放在url上,即HTTP协议头上,其格式为:以?分割URL和传输数据,参数之间以&相连;post把数据放在HTTP的包体内(requrest body)

2.传输数据的大小:
get一般传输数据大小不超过2k-4k
post请求传输数据的大小根据php.ini 配置文件设定,也可以无限大

**get提交的数据最大是2k(原则上url长度无限制,那么get提交的数据也没有限制咯?限制实际上取决于浏览器,浏览器通常都会限制url长度在2K个字节,即使(大多数)服务器最多处理64K大小的url,也没有卵用);
post理论上没有限制。实际上IIS4中最大量为80KB,IIS5中为100KB

3.数据传输上:
get,通过拼接url进行传递参数
post,通过body体传输参数

**GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)

4.后退页面的反应:
get请求页面后退时,不产生影响
post请求页面后退时,会重新提交请求

**GET在浏览器回退时是无影响的,POST会再次提交请求

5.缓存性:
get请求是可以缓存的
post请求不可以缓存

**GET请求会被浏览器主动cache,而POST不会,除非手动设置

扫描二维码关注公众号,回复: 3805541 查看本文章

6.安全性:
都不安全,原则上post肯定要比get安全,毕竟传输参数时url不可见,但也挡不住部分人闲的没事在那抓包玩,浏览器还会缓存get请求的数据。安全性个人觉得是没多大区别的,防君子不防小人就是这个道理。对传递的参数进行加密,其实都一样

7.GET请求只能进行url编码,而POST支持多种编码方式

8.GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留

9.GET只接受ASCII字符的参数的数据类型,而POST没有限制

那么,post那么好为什么还用get?get效率高!

想了解的更详细,可以参考:

https://blog.csdn.net/zzk220106/article/details/78595108/

猜你喜欢

转载自blog.csdn.net/qq_20264581/article/details/83542697