get和post是http协议最常用的两种请求方式,他们之间有哪些区别呢?
▍区别
1、通常GET把参数包含在URL中,POST通过request body传递参数;
其实,GET请求也可以在request body存放数据,POST也可以在URL中放置数据,但是对于这种不符合HTTP行为准则的情况,服务器一般会无视那些被“非法”传递的数据。
2、GET在浏览器回退时是无害的,而POST会再次提交请求;
3、GET产生的URL地址可以被Bookmark(添加到书签),而POST不可以;
4、GET请求会被浏览器主动cache,而POST不会,除非手动设置;
5、GET请求只能进行url编码,而POST支持多种编码方式;
URL编码:对汉字以及特殊字符进行带有%的十六进制编码。
6、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留;
7、GET请求在URL中传送的参数是有长度限制的,而POST没有;
首先,GET、POST请求本身都没有对长度做限制。之所以会产生限制,是因为浏览器和服务器为了效率和安全而设置的限制。
8、对参数的数据类型,GET只接受ASCII字符,而POST没有限制;
9、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息;
POST请求也不是绝对安全的,只不过它比GET请求更安全一些。
10、GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)(Firefox会一次性发送)。
▍总结
GET和POST根本上的区别只有一点:GET用于获取数据;POST用于修改数据。
PUT:增加
DELETE:删除
POST:修改
GET:查询
GET效率比POST效率高!
▍参考文章