get post 两种传参的区别-PHP问题

资源魔 41 0

get post 两种传参的区分:

GET以及POST是HTTP申请的两种根本办法,要说它们的区分,接触过WEB开发的人都能说出一二。

最直观的区分就是GET把参数蕴含正在URL中,POST经过request body通报参数。

你可能本人写过有数个GET以及POST申请,或许曾经看过不少权势巨子网站总结出的他们的区分,你十分分明晓得何时该用甚么。

当你正在面试中被问到这个成绩,你的心田充溢了自信以及喜悦。


9fab35803d2583a7430048aacb778ee.png

你微微松松的给出了一个“规范谜底”:

GET正在阅读器回退时是有害的,而POST会再次提交申请。

GET孕育发生的URL地点能够被Bookmark,而POST不成以。

GET申请会被阅读器自动cache,而POST没有会,除了非手动设置。

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

GET申请参数会被完好保存正在阅读器汗青记载里,而POST中的参数没有会被保存。

GET申请正在URL中传送的参数是有长度限度的,而POST么有。

对参数的数据类型,GET只承受ASCII字符,而POST不限度。

GET比POST更没有平安,由于参数间接暴露正在URL上,以是不克不及用来通报敏感信息。

GET参数经过URL通报,POST放正在Request body中。

(本规范谜底参考自w3schools)

“很遗憾,这没有是咱们要的答复!”

8d31e17dbf6f28ae953cb832be09f86.png

请通知我假相。。。

假如我通知你GET以及POST实质上不区分你信吗?

让咱们扒下GET以及POST的外套,坦诚相见吧!

93bda270766aad3fe14881ed8b423ea.png

GET以及POST是甚么?HTTP协定中的两种发送申请的办法。

HTTP是甚么?HTTP是基于TCP/IP的对于数据若何正在万维网中若何通讯的协定。

HTTP的底层是TCP/IP。以是GET以及POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET以及POST能做的事件是同样同样的。你要给GET加之request body,给POST带上url参数,技巧上是齐全行的通的。

那末,“规范谜底”里的那些区分是怎样回事?

daa9fa56ba246e09ca5fed6eb7310d4.png

正在我年夜万维网世界中,TCP就像汽车,咱们用TCP来运输数据,它很牢靠,素来没有会发作丢件少件的景象。然而假如路上跑的全是看起来如出一辙的汽车,那这个世界看起来是一团凌乱,送急件的汽车可能被后面满载货品的汽车拦堵正在路上,整个交通零碎肯定会瘫痪。为了不这类状况发作,交通规定HTTP降生了。HTTP给汽车运输设定了好几个效劳种别,有GET,

POST, PUT,

DELETE等等,HTTP规则,当执行GET申请的时分,要给汽车贴上GET的标签(设置method为GET),并且要求把传送的数据放正在车顶上(url中)以不便记载。假如是POST申请,就要正在车上贴上POST的标签,并把货品放正在车箱里。当然,你也能够正在GET的时分往车箱内偷偷藏点货品,然而这是很没有荣耀;也能够正在POST的时分正在车顶上也放一些数据,让人感觉傻乎乎的。HTTP只是个行为原则,而TCP才是GET以及POST怎样完成的根本。

然而,咱们只看到HTTP对GET以及POST参数的传送渠道(url仍是requrest body)提出了要求。“规范谜底”里对于参数巨细的限度又是从哪来的呢?

fa5062be3ad836f6f1df4e1fb0554af.png

正在我年夜万维网世界中,另有另外一个首要的脚色:运输公司。没有同的阅读器(发动http申请)以及效劳器(承受http申请)就是没有同的运输公司。

尽管实践上,你能够正在车顶上有限的堆货品(url中有限加参数)。然而运输公司可没有傻,装货以及卸货也是有很年夜老本的,他们会限度单次运输量来管制危险,数据量太年夜对阅读器以及效劳器都是很年夜累赘。业界不可文的规则是,(年夜少数)阅读器通常城市限度url长度正在2K个字节,而(年夜少数)效劳器最多解决64K巨细的url。超越的局部,恕没有解决。假如你用GET效劳,正在request

body偷偷藏了数据,没有同效劳器的解决形式也是没有同的,有些效劳器会帮你卸货,读出数据,有些效劳器间接疏忽,以是,尽管GET能够带request

body,也不克不及保障肯定能被接纳到哦。

好了,如今你晓得,GET以及POST实质上就是TCP链接,并没有差异。然而因为HTTP的规则以及阅读器/效劳器的限度,招致他们正在使用进程中表现出一些没有同。

你认为本文就这么完结了?

e41325f6ce9057005fc6993b2137c1e.png

咱们的年夜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的区分”的时分,你的心田是否是这样的?

10548c8276122bb91b55a6161ced5b7.png

完结!!!

保举教程: 《php教程》

以上就是get post 两种传参的区分的具体内容,更多请存眷资源魔其它相干文章!

标签: php教程 get post php故障解决 php使用问题

抱歉,评论功能暂时关闭!