GET和POST的区别都有哪些呢?在网上搜了好多,但总是云里雾里的,所以自己也总结一下,其中看到一篇博客下的评论,觉得写的很简练,就贴过来:
++++++++++自己再来罗嗦的总结一波+++++++++++++++++++++++++++
1.GET和POST都是HTTP的请求方法,而HTTP又是基于TCP/IP实现的,
所以GET和POST都属于TCP连接,那为啥还要进行区分呢,
直接用TCP进行传输不好吗?为什么还要HTTP呢?
2.如果直接用TCP进行数据传输,那么无论是单纯的获取资源还是修改服务器资源的请求,
在外界开来都是TCP连接,不利于进行管理。
所以HTTP也就诞生了。HTTP就是TCP进行传输数据的一个规则,
这个规则里规定了GET\POST\PUT\DELETE等请求方法,
这些方法都得各司其职,才能维护一定的做事条理
3.下边就来说说它们的区别吧:
(1)表现形式:
GET将请求参数附在URL之后,即请求行中;
POST将请求参数放在请求体中
(2)安全性:
信息修改:
- GET更安全,因为GET只是获取数据,并不参与修改数据;
- POST可能会修改服务器上的资源请求,比如对文章点赞,就是提交一次请求,它改变了服务器中的数据(点赞数)
信息保护:
- GET不安全,因为GET将用户提供的数据明晃晃的晾在URL中,我们可以很容易看到。而且GET会被浏览器主动缓存,可以通过历史记录就能查看到请求数据;
- POST相对能安全一点,因为至少还悄咪咪的藏在了请求体中,但其实通过抓包还是能轻易获取到请求数据
幂等性:
- GET符合幂等性,因为只要URL相同,我们就能获取到同样的结果。但实际过程并非那么严格,例如新闻应用中,新闻站点的头版不断更新,虽然第二次请求返回的不是同一批新闻,但仍然是安全幂等的,因为总是返回当前新闻.
- POST不符合幂等性
(3)浏览器缓存:
- GET是会被浏览器主动缓存的,如果下次传输的数据相同,就会返回缓存中的内容,更快的展示数据;
- POST不能自动缓存,但可以手动设置
(4)编码方式: - URL编码方式是ASII,所以当URL中包含非ASII字符时,需要先编码再传输;
- POST是支持多种编码的,不需要进行重新编码
(5)长度限制: - GET: HTTP协议其实并没有规定GET请求的长度,这个长度限制是由浏览器和Web服务器所决定的,并且各个浏览器对长度的限制各不相同。大多数浏览器限制URL长度为2k个字节,大多数服务器最多处理64K大小的URL,因此也不适合传输大量数据集;
- POST: POST的请求数据不是通过URL传输所以数据长度相对来讲是没有限制的,但还是有的,这取决于服务器的配置
(7)发送数据包: - GET方法产生一个数据包,浏览器会把请求头和请求数据一起发送出去,服务器收到后会响应状态码200(OK)
- POST方法会产生两个TCP数据包,浏览器会先将请求头发送给服务器,服务器收到后响应100(continue),浏览器再发送请求数据,服务器响应200。
(8)是否可以作为标签收藏 - GET可以
- POST不可以
虽然看起来GET比POST快,但实际上网络良好的情况下,它们传输速度基本相当,网络差得时候,两次TCP包在验证数据完整性上有优势,而且 并不是所有POST中都发送两次包,Firefox就一次