get post 两种传参的区分:
GET以及POST是HTTP申请的两种根本办法,要说它们的区分,接触过WEB开发的人都能说出一二。
最直观的区分就是GET把参数蕴含正在URL中,POST经过request body通报参数。
你可能本人写过有数个GET以及POST申请,或许曾经看过不少权势巨子网站总结出的他们的区分,你十分分明晓得何时该用甚么。
当你正在面试中被问到这个成绩,你的心田充溢了自信以及喜悦。
你微微松松的给出了一个“规范谜底”:
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)
“很遗憾,这没有是咱们要的答复!”
请通知我假相。。。
假如我通知你GET以及POST实质上不区分你信吗?
让咱们扒下GET以及POST的外套,坦诚相见吧!
GET以及POST是甚么?HTTP协定中的两种发送申请的办法。
HTTP是甚么?HTTP是基于TCP/IP的对于数据若何正在万维网中若何通讯的协定。
HTTP的底层是TCP/IP。以是GET以及POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET以及POST能做的事件是同样同样的。你要给GET加之request body,给POST带上url参数,技巧上是齐全行的通的。
那末,“规范谜底”里的那些区分是怎样回事?
正在我年夜万维网世界中,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)提出了要求。“规范谜底”里对于参数巨细的限度又是从哪来的呢?
正在我年夜万维网世界中,另有另外一个首要的脚色:运输公司。没有同的阅读器(发动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的区分”的时分,你的心田是否是这样的?
完结!!!
保举教程: 《php教程》
以上就是get post 两种传参的区分的具体内容,更多请存眷资源魔其它相干文章!
标签: php教程 get post php故障解决 php使用问题
抱歉,评论功能暂时关闭!