如果有人问我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)】
如果有人问我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)】
相关文章推荐
- 大众点评的大数据实践-CSDN.NET
- KMP算法
- Selenium2学习-019-WebUI自动化实战实例-017-获取浏览器类型
- 在Linux下挂载Windows系统共享目录
- 在Linux下挂载Windows系统共享目录
- Java链表形式实现多项式相加
- cocos2dx中精灵如何run一个动作
- JavaScript总结(终极大总结)
- #ifndef#define#endif防止头文件重复包含, 你不是真的懂
- 写在博客开通当日
- 百度调用API
- Jquery mobile 在手机page切换白屏闪烁问题
- 欢迎使用CSDN-markdown编辑器
- androidの更改个人资料性别弹出框案例
- android SurfaceView详解
- send函数以及recv函数
- 自定义控件-消息个数提醒控件
- css样式编辑
- VC学习笔记6音频处理
- Linux系统中基本的用户管理方法