本文主要解释“GET和POST这两种基本请求方法有什么区别”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习“GET和POST这两种基本的请求方式有什么区别”!
Getpost是HTTP请求的两种基本方法,任何接触过WEB开发的人都可以对它们的不同之处讲一二。
最直观的区别是GET在URL中包含参数,POST通过请求体传递参数。
你可能自己写过无数个GET和POST请求,或者看到过很多权威网站总结的它们之间的差异。你很清楚什么时候用什么。
面试中被问到这个问题时,内心充满了自信和喜悦。
你轻松地给出了一个“标准答案”:
浏览器回滚时GET是无害的,POST会再次提交请求。
GET生成的网址可以是Bookmark,但不能是POST。
除非手动设置,否则浏览器会主动缓存GET请求,而POST不会。
GET请求只能进行url编码,而POST支持多种编码方式。
获取请求参数将完全保留在浏览器历史记录中,而开机自检中的参数将不会保留。
在URL中由GET请求发送的参数长度有限,而POST则没有。
对于参数的数据类型,GET只接受ASCII字符,POST没有限制。
它不如GET POST安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
获取参数通过网址传递,发布放在请求正文中。
“可惜,这不是我们想要的答案!”
请告诉我真相。
如果我告诉你GET和POST本质上没有区别,你会相信我吗?
让我们脱下GET和POST的外衣,坦诚相待!
getpost是什么?HTTP协议中发送请求的两种方法。
什么是HTTP?HTTP是一种基于TCP/IP的协议,涉及数据如何在万维网中通信。
HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说GET/POST是TCP链路。而GET POST也可以做到同样的事情。你必须在GET中添加请求体,在POST中添加url参数,这在技术上是完全可行的。
那么,“标准答案”有什么不同呢?
在我的万维网中,TCP就像一辆汽车。我们使用TCP来传输数据。它非常可靠,而且从来不会发生几件丢失的情况。
但是如果所有在路上行驶的汽车看起来完全一样,那么这个世界看起来就像一团乱麻。运送紧急物品的汽车可能会被前面装满货物的汽车挡住,整个运输系统将会瘫痪。为了避免这种情况,流量规则HTTP诞生了。
HTTP为汽车运输设置了几个服务类别,包括GET、POST、PUT、DELETE等。HTTP规定,在执行GET请求时,汽车要标记为GET(将方法设置为GET),传输的数据要放在车顶(在url中),方便记录。
如果是POST请求,需要在车上贴一个POST标签,把货物放在车厢里。当然,你也可以在GET的时候偷偷把一些货物藏在火车里,但这是非常不光彩的;你也可以在开机自检的时候把一些数据放在车顶,让人觉得很傻。
HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。
但是,我们只看到HTTP需要GET和POST参数的传输通道(url或requrest body)。《标准答案》中参数大小的限制从何而来?
269.jpg" alt="GET和POST两种基本请求方法的区别有哪些">
在我大万维网世界中,还有另一个重要的角色:运输公司。
不同的浏览器(发起http请求)和服务器(接受http请求)就是不同的运输公司。虽然理论上,你可以在车顶上无限的堆货物(url中无限加参数)。
但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。业
界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。
如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦。
好了,现在你知道,GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
你以为本文就这么结束了?
我们的大BOSS还等着出场呢...
这位BOSS有多神秘?当你试图在网上找“GET和POST的区别”的时候,那些你会看到的搜索结果里,从没有提到他。他究竟是什么呢...
GET和POST还有一个重大区别:
简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包。
长的说:对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。
但这是一个坑!跳入需谨慎。为什么?
1. GET与POST都有自己的语义,不能随便混用。
2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
到此,相信大家对“GET和POST两种基本请求方法的区别有哪些”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/51133.html