GET和POST是什么?HTTP协议中的两种发送请求的方法。
-
url可见性:
get,参数url可见;
post,url参数不可见 -
数据传输:
get,通过拼接url进行传递参数;
post,通过body体传输参数 -
缓存性:
get请求是可以缓存的
post请求不可以缓存 -
后退页面的反应
get请求页面后退时,不产生影响
post请求页面后退时,会重新提交请求 -
传输数据的大小
get一般传输数据大小不超过2k-4k
post请求传输数据的大小根据php.ini 配置文件设定,也可以无限大。 -
安全性
这个也是最不好分析的,原则上post肯定要比get安全,毕竟传输参数时url不可见,但也挡不住部分人闲的没事在那抓包玩。安全性个人觉得是没多大区别的,防君子不防小人就是这个道理。对传递的参数进行加密,其实都一样。
GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包
长的说:
- 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
- 而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
下面关于http Get和Post说法正确的有哪些? ABCD
A. GET 用于获取信息,是无副作用的,是幂等的,且可缓存;
B. POST 用于修改服务器上的数据,有副作用,非幂等,不可缓存;
C. Http Get的数据在 URL 中对所有人都是可见的;
D. POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中;