计算机网络2:get和post的区别

GET和POST是HTTP协议中的两种请求方法,主要区别在于GET将参数显示在URL中,而POST放在请求体中。GET更安全,不会修改服务器数据,但可能因URL暴露而不够安全,且有长度限制;POST可修改数据,相对较不安全,但无明确长度限制。GET请求会被浏览器缓存,POST则不会自动缓存。此外,GET是幂等的,POST不是。在实际使用中,GET通常用于获取资源,POST用于提交数据。
摘要由CSDN通过智能技术生成

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就一次
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值