- A+
所属分类:Web前端
GET
HTTP
GET
方法请求指定的资源。使用GET
的请求应该只用于获取数据
GET
请求没有主体,在正确实现的条件下GET
方式是安全、幂等、可缓存的,并且支持html表单提交
POST
HTTP
POST
方法 发送数据给服务器
POST
请求通常是通过HTML表达发送,并返回服务器的修改结果
POST有请求体,POST方式是不安全、不幂等、可缓存的
幂等:连续调用一次或者多次的效果相同(无副作用)
但连续调用同一个POST
可能会带来额外的影响,比如多次提交订单
总结!
GET和POST所谓区别,只是浏览器厂家根据约定,做得限制而已:
-
GET
是通过明文发送数据请求,而POST
是通过密文(安全) -
GET
传输的数据量有限,因为url的长度有限,POST
则不受限 -
GET
请求的参数只能是ASCII码(中文需要URL编码) -
GET
产生一个TCP数据包,POST
产生两个TCP数据包 -
对于
GET
方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据) -
对于
POST
,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
因为POST
需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。
为什么?
-
GET
与POST
都有自己的语义,不能随便混用 -
在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视
-
并不是所有浏览器都会在
POST
中发送两次包,Firefox
就只发送一次