get和post的区别

常见回答:

1:get会将请求参数附加在URL,限制大小4k,只接受ASCII字符,回退上一页面无害,请求参数会被保存在浏览器历史记录,只能通过URL编码,没有post安全。

2:post参数不可见,回退上一页面需要再次提交请求,可接受所有类型的参数,对于请求内容没有大小限制的要求,请求内容附加在request-body中,请求完成请求参数不会被浏览器历史记录记录,相比较get更安全。

更深层次:

get/post都是http发送请求的方法,而http是基于TCP/IP的关于数据在万维网通信的协议。
那么可以理解为get/post的底层是http,http的底层是TCP/IP,那么根据等价原来,get/post的底层就是TCP/IP。
好的,我们现在来看TCP/IP,在万维网的逻辑或者称为实现机制,TCP作为运输数据的组件,如果未对其传递数据进行划分,
类比于公路,会出现急件的货车被满载货物但是不太着急的货车堵路,所以出现了http协议,http对于传送的数据进行标签划分,
诸如GET/POST/DELETE/PUT等,且作出了相关规定,比如当请求方式为get时,需要给货车贴上get的标签,并且将货物(数据)
放在货车顶部(附加在URL),请求方式为post时,给货车贴上post标签,将货物放在货车的货箱内部(request-body),但是我们
还是那句话,协议你可以选择不遵守,比如使用get方式时给request-body藏一些数据,使用post给url放点参数,在技术上都是
可行的,但是不那么光鲜。

那么我们现在来看看get方式为什么限制参数大小,此处应用转载博文,个人解释可能有所遗漏。
在万维网的世界中,有一个重要的公司,是道路运输公司,他们负责管理万维网的货物运输(数据运输),虽然理论上来说get方式传递的
数据量可以是无限制的,但是参数附加到URL地址以及对于最终URL的解析都是需要付出一些成本的,
数据量过大对于服务器和浏览器都是一个负担,所以限制了大小,(大多数)浏览器通常都会限制url长度在2K个字节,
而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。如果你用GET服务,在request body偷偷藏了数据,
不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,
也不能保证一定能被接收到哦。

get/post还有一个重要的区别,就是get方式产生一个数据包,post方式产生两个数据包。
对于get方式,他一次直接将http header 和data传送过去,服务器响应200(返回数据);
post方式先发送header,服务器响应100 continue,浏览器在发送data,响应200 ok(返回数据);

所以可以视作get方式效率较高于post。

并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值