http方法下,get请求和post请求的区别(面试向)

GET产生的URL地址可以被Bookmark,而POST不可以。

GET请求只能进行url编码,而POST支持多种编码方式。

GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

GET请求在URL中传送的参数是有长度限制的,而POST没有。

对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

GET参数通过URL传递,POST放在Request body中。


以上是网上搜索的标准答案,但是不是面试官想要的答案!!!
在这里插入图片描述

GET和POST是什么?
说到底,他们只是HTTP协议中的两种发送请求的方法罢了,所以本质是一样的,HTTP的底层是TCP/IP,所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。 HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。


那么为什么get会有限制呢?
数据量太大对浏览器和服务器都是很大的负担。(大多数)浏览器通常都会限制URL长度在2K个字节,而(大多数)服务器最多处理64K大小的URL。超过的部分,不做处理。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你删掉多余的,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到。


总结:

1.Get请求是向服务器获取数据,而Post是向服务器交替数据的一种请求。Get是获取数据,而不是修改数据,类似数据库查询(select语句)一样,数据不会被修改。Post表示可能修改变服务器上的资源的请求。

2.Get请求的参数会跟在URL后,也就是请求的数据会附在URL之后,以符号?分割URL和传输数据,参数之间以&相连。

3.Get传输的数据有大小限制,因为GET是通过URL提交数据,所以GET可提交的数据量跟URL的长度有直接关系,不同的浏览器对URL的长度的限制是不同的。

4.GET请求的数据会被浏览器缓存起来,用户名和密码将出现在URL上,其他人可以查到历史浏览记录,数据不太安全。

5.Post请求是作为HTTP消息的实际内容发送给web服务器,数据放置在HTML Header内提交,Post没有限制提交的数据。

6.本质上,这两种请求没有区别,对于GET方式的请求,浏览器会把HTTP header和data一并发送出去,服务器响应200(返回数据)而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200,也就是说:GET产生一个TCP数据包;POST产生两个TCP数据包。


以上是本人借鉴并整理的,强烈推荐这篇文章:
https://www.cnblogs.com/logsharing/p/8448446.html
这位大佬太厉害了!通俗易懂,幽默风趣!强烈建议去看看!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值