GET与POST请求他们的区别主要有以下几点
(一)GET通过地址栏传输,PSOT通过报文传输;
(二)GET参数有长度限制(受限于URL长度),而PSOT无限制;
(三)GET传输是不安全的,POST是安全的;
(四)GET请求产生一个TCP数据包,这相当于GET他可以一次性就可以把货送到位;
POST请求产生两个TCP数据包,这相当于POST他得要跑两趟才可以把货送到位;
详细分析
第一点分析:
GET是通过URL地址栏进行传输;
http//:localhost:8080/user/login/userName=bajiao?password=bajiao123
POST是通过报文的方式进行传输(以下是以Postman报文格式进行展示);
URL:http//:localhost:8080/user/login
Headers:{
Content-type:application/json
},
Body:{
“userName”:”bajiao”,
“password”:bajiao123
}
第二点分析:
GET请求是有一定局限的限制的;
POST的这样的数据呢,通常来说可以放在body,也就是请求体里面,他是没有数据长度的限制的;
1、Http get方法提交的数据大小长度并没有限制,Http协议规范没有对URL长度进行限制。目前说的get长度有限制,是特定的浏览器及服务器对它的限制。各种浏览器和服务器的最大处理能力如下:
IE:对URL的最大限制为2083个字符,若超出这个数字,提交按钮没有任何反应。
Firefox:对Firefox浏览器URL的长度限制为:65536个字符。
Safari:URL最大长度限制为80000个字符。
Opera:URL最大长度限制为190000个字符。
Google(chrome):URL最大长度限制为8182个字符。
Apache(Server):能接受的最大url长度为8192个字符(这个准确度待定???)
Microsoft Internet Information Server(IIS):n能接受最大url的长度为16384个字符。
2、理论上讲,post是没有大小限制的。Http协议规范也没有进行大小限制,起限制作用的是服务器处理程序的处理能力。
Tomcat下默认post长度为2M,可通过修改conf/server.xml中的“maxPostSize=0”来取消对post大小的限制。
第三点分析:
GET是不安全的,因为在传输过程,数据被放在请求的URL中;
POST是安全的,因为所有操作对用户来说都是不可见的;
GET请求的安全性可能不如POST那么高,但是GET请求他的一个传输速度比POST要快;
第四点分析:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据);
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去;
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效一点;
HTTP请求中POST与GET的区别拓展小知识:
1、GET在浏览器回退时是无害的,而POST会再次提交请求;
2、GET产生的URL地址可以被Bookmark,而POST不可以;
3、GET请求会被浏览器主动cache,而POST不会,除非手动设置;
4、GET请求只能进行URL编码,而POST支持多种编码方式;
5、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留;
6、GET请求在URL中传送的参数是有长度限制的,而POST么有;
7、对参数的数据类型,GET只接受ASCII字符,而POST没有限制;
8、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息;
9、GET参数通过URL传递,POST放在Request body中;
以上是我学习的笔记,希望能够给大家带来帮助,如有不足之处还希望各路大神批评指正。谢谢大家~~~~