您的位置:首页 > 其它

如果有人问我GET和POST的区别...

2015-07-30 17:46 155 查看
如题

如果有人问我GET和POST的区别,我该怎么回答?

还是小白的时候问过一个带我入门php的学长,他是这么说的:

GET使用URL或Cookie传参,而POST将数据放在BODY中;

GET的URL会有长度上的限制,而POST的数据则可以非常大;

因为POST的数据在URL上不可见,所以比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和POST的理解,是纯粹地来源于HTTP协议。他们只有一点根本区别,简单点儿说,一个用于获取数据,一个用于修改数据。具体的请参考RFC文档。如果一个人一开始就做Web开发,很可能把HTML对HTTP协议的使用方式,当成HTTP协议的唯一的合理使用方式。从而犯了以偏概全的错误。

Orz

如果有人问我GET和POST的区别,我该怎么回答???

答: 这么白痴的问题,自己Google!【我要是像学长告诉我的那样告诉学弟学妹,有一天他们看到上面那个作者的文章,那我在他们心中神一样的地位就不复存在了T T, 但是要我跟他们讲这么多……这个违背了我的’节能主义’ 啊(最近看的动漫《冰菓》里的男主就是节能主义者,虽然我只能算半个节能主义者n(≧▽≦)n)】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: