加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

GET 和 POST 有什么区别?及为什么网上多数答案都是错的

发布时间:2019-06-07 01:35:59 所属栏目:建站 来源:南柯之石
导读:假若有人问你,GET和POST,有什么区别?你会怎样答复? 我的经验 前几天有人问我这个题目。我说GET是用于获取数据的,POST,一样平常用于将数据发给处事器之用。 这个谜底仿佛并不是他想要的。于是他继承追问有没有此外区别?我嗣魅这就是个名字罢了,假如处事器支

假若有人问你,GET和POST,有什么区别?你会怎样答复?

GET 和 POST 有什么区别?及为什么网上大都谜底都是错的

我的经验

前几天有人问我这个题目。我说GET是用于获取数据的,POST,一样平常用于将数据发给处事器之用。

这个谜底仿佛并不是他想要的。于是他继承追问有没有此外区别?我嗣魅这就是个名字罢了,假如处事器支持,他完全可以把GET改个名字叫GET2。他反问道,那就是纯真的名字上的区别喽?我想了想,我认为假如说再详细的区别,只能去看RFC文档了,还要取决于处事器(指Apache,IIS)的详细实现。但我不得不认可,我简直没有细心看过HTTP的RFC文档。于是我说,我对HTTP协议不太认识。这个题目也就竣事了。

最广泛的谜底

返来之后寻思了好久,他到底是想问我什么?我一向就认为GET和POST没有什么除了语义之外的区别,自打我开始进修Web编程开始就是这么领略的。

也许许多人都已经猜到了,他要的谜底是:

1. GET行使URL或Cookie传参。而POST将数据放在BODY中。

2. GET的URL会有长度上的限定,则POST的数据则可以很是大。

3. POST比GET安详,由于数据在地点栏上不行见。

可是很不幸,这些区别满是错误的,更不幸的是,这个谜底照旧Google搜刮的头版头条,然而我基础没想着这些是谜底,由于在我看来他们都是错的。我来逐一表明一下。

GET和POST与数据怎样转达没有相关

GET和POST是由HTTP协议界说的。在HTTP协议中,Method和Data(URL, Body, Header)是正交的两个观念,也就是说,行使哪个Method与应用层的数据怎样传输是没有彼此相关的。

HTTP没有要求,假如Method是POST数据就要放在BODY中。也没有要求,假如Method是GET,数据(参数)就必然要放在URL中而不能放在BODY中。

那么,网上传播甚广的这个说法是从何而来的呢?我在HTML尺度中,找到了相似的描写。这和网上传播的说法同等。可是这只是HTML尺度对HTTP协议的用法的约定。怎么能当成GET和POST的区别呢?

并且,当代的Web Server都是支持GET中包括BODY这样的哀求。固然这种哀求不行能从赏识器发出,可是此刻的Web Server又不是只给赏识器用,已经完全地超出了HTML处事器的领域了。

知道这个有什么用?我不想表明白,偶然辰就得本身痛一次才记得住。

HTTP协议对GET和POST都没有对长度的限定

HTTP协议明晰地指出了,HTTP头和Body都没有长度的要求。而对付URL长度上的限定,有两方面的缘故起因造成:

1. 赏识器。听说早期的赏识器会对URL长度做限定。听说IE对URL长度会限定在2048个字符内(传播很广,并且无数同事都暗示认同)。但我本身试了一下,我结构了90K的URL通过IE9会见live.com,是正常的。网上的对象,哪怕是Wikipedia上的,也不能信。

2. 处事器。URL长了,对处事器处理赏罚也是一种承担。本来一个会话就没有几多数据,此刻假若有人恶意地结构几个几M巨细的URL,并不断地会见你的处事器。处事器的最大并发数显然会降落。另一种进攻方法是,把汇报处事器Content-Length是一个很大的数,然后只给处事器发一点儿数据,嘿嘿,处事器你就傻等着去吧。哪怕你有超时配置,这种存心的次次会见超时也能让处事器吃不了兜着走。有鉴于此,大都处事器出于安详啦、不变啦方面的思量,会给URL长度加限定。可是这个限定是针对全部HTTP哀求的,与GET、POST没有相关。

安详不安详和GET、POST没有相关

我认为这真是中国特色。我讲个小段子,各人应该可以领会出这个说法何等的好笑。

认为POST数据比GET数据安详的人会说

“防君子不防小人;中国小白多,能防小白用户就行了。”

“哼,”我不觉得然,“那你怎么不说,URL参数都Encode过了,或是Base64一下,小白也看不懂啊。”

那人辩驳道,“Encode太简朴了,智慧点儿的小白很轻易就可以Decode并修改掉。”

我笑道,“五十步笑百步耳,再智慧点儿的小白还会截包并重发呢,Opera就有这成果。”

那人凶险地祭入迷器——最终表明权,说,“这个不算小白。”

我日啊。

最后一点儿感触

我之前一向做Windows桌面应用,对Web开拓无甚相识,直到一年多前转做处事器端开拓,才开始打仗到HTTP。(留意,我说的是HTTP,不是HTML。处事器开放接口是基于REST理念计划的,行使的协议是HTTP,可是传输的内容不是HTML。这不是Web Server,而是一个Web Service)

以是我对付GET和POST的领略,是纯粹地来历于HTTP协议。他们只有一点基础区别,简朴点儿说,一个用于获取数据,一个用于修改数据。详细的请参考RFC文档。

假如一小我私人一开始就做Web开拓,很也许把HTML对HTTP协议的行使方法,当成HTTP协议的独一的公道行使方法。从而犯了以偏概全的错误。

也许有人会认为我钻牛角尖。我只是不喜好迷糊其词,不喜好界线不清、观念不明,不喜好“拿来主义”,也不喜好被其余喜好钻牛角尖的人挖苦得无地自容。

“知之为知之,不知为不知,是知也。”

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读