还不清楚GET和POST的区别到底在哪里?

作为一名WEB开发人员,提到GET、POST基本都能说出一些关于这两种HTTP请求的异同点。

它们最直观的区别是:GET请求是把参数直接拼在URL后面的,而POST则是通过RequestBody传递参数。

在W3C上,大神是这么回答的:

  • GET在浏览器回退时是无害的,而POST会再次提交请求。

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

  • GET请求会被浏览器主动cache,而POST不会,除非手动设置、

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

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

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

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

  • GET的安全性相对于POST较低,因为GET的参数是直接暴露在URL上,所以用户相关的敏感信息不能用GET来传递。

以上这些基本都是我们真正可以看到或感知到的基本操作,对于正在读文章的你们来说,更是小巫见大巫。

那我们现在就来揭开它的面纱,刨根问底,发掘技术的本质吧!

前面说个GET和POST是HTTP中的两种发送请求的方法。

那么问题来了,HTTP是什么?

答:HTTP是基于TCP/IP的关于数据在万维网中如何通信的协议。

那也就是说GET和POST都是TCP链接,也可以说GET和POST能做的事情都是基于TCP协议的,那就是说其实GET和POST的底层都是一样的。

那此时在看文章的你们,是不是就该指着屏幕口吐芬芳了:“作者你在讲什么,写着写着把自己都写迷糊了吧???”

此时我嘿嘿一笑,本着中华武术点到为止的传统精神,我决定开始正文了。

在万维网的世界中,TCP就像汽车,我们用TCP来运输数据,是因为它很可靠,从来不会发生丢件少件的现象。

1.HTTP规定:

    HTTP就像是风里雨里站在各大路口等你的交通警察,它为TCP制定了一套上路驾驶的规范协议,为汽车运输设定了好几个服务级别,有GET,POST,PUT,DELETE等,HTTP规定,当执行GET请求时,汽车必须在车上贴上GET标签,方便我再路上查你,而且你要拉的货物必须放在车顶,让我看见。

那如果是POST,则像我们之前说的那样,同样要在车上贴标签,但贴的是POST标签,而且要把货物放在车里,运的什么自己知道就行了。

2.浏览器端:

浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。

3.浏览器与服务器交互时端(提升逼格专用):

简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包。
长的说:对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。

所以:综合以上几点来看,GET和POST的本质都是TCP链接,没什么差别,只不过HTTP、浏览器、以及服务器三者的限制,导致他们在实际的应用过程中各自分配了各自的职责和功能,以保证我们在整个互联网中能够安全、快速、稳定的遨游。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值