最近我一直在使用取GET和POST数据,让我用一个getter函数访问它的包装PHP类。 经过多年的开发Web应用程序的我从来没有一个很好的理由去关心传入的变种是否是从POST未来或GET。 不仅如此,但我真是厌倦了不必检查两个阵列可以对单变量的。
今天,我发现笨有POST数据的一个getter函数和一个GET。 是否有任何一点呢? 已经有人在这里曾经有一个理由去关心他的数据是从哪里来的?
一对夫妇澄清:我不是问POST之间的差异或GET或哪一个我应该使用将数据发送到一个页面。 我想咨询一下我是否应该关心的数据是通过GET或POST抵达到我的网页。
这是语义的问题 - 如果一个接口(比如REST)需要语义的较高水平,那么这就是一个很好的理由来关心HTTP“动词”。
HTTP标准定义了不同的语义GET / POST操作( http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html秒9.1.1)
特别是,你可以使用数据从一个GET请求来执行信息检索,但你不应该做任何事情,它涉及的状态变化的一些概念。 其中一个原因是,用户代理可预未经用户实际点击一个链接页面(和做GET请求)。 (达致协议是Web浏览器中notvery常见,但我听说过的邮件客户端做的那个)
你是否希望你的数据从一个形式(POST)未来或它正在通过URL参数(GET)提交你可以关心的差异。 例如,对于安全性的考虑,您不希望接受URL数据,如果你希望用户填写表格。
而刚刚备案:不需要检查两个数组,PHP中的数组$ _REQUEST包含他们两个(加上COOKIE)。
在简单的网页形式的情况下,你可能不关心。 但是,当安全受到威胁,你可能会关心的差异:如果有人的推杆常hidden
在输入GET
变量,你对待,就像它从一个来到POST
,这是一个潜在的攻击向量。
在RESTful API中,你肯定关心的区别: POST
不仅仅意味着一个完全不同的事情GET
在这种情况下,它多被忽视的表兄弟一起, PUT
和DELETE
。
那么,最简单的答案是,知道你的数据应该如何获得对安全很重要。
通常你可以在类型之间的互换,而是采取登录例如,您woule是一个傻瓜,允许登录到通过GET来处理。 我很想看看你的服务器日志,然后可以看到在请求日志中的GET变量..解锁所有用户的密码。
有很多在该职位的原因需要稍微更多的资源也,所以你不希望强制仅POST请求。 通过您的网站采取的导航。 怎么会有人为网页添加书签,如果他们通过发送POST命令进行导航。
你应该通常只是instintctively知道哪个是最适合你的。
GET-要求公开的所有数据记录文件(你之间的代理),引荐和对人在看你的浏览器中可见。
通过GET的数据长度是有限的。
如果你对安全性:为什么你会接受通过GET通过表单发送的数据,如果你知道你的形式方法是POST?
这就是你的项目政治问题。 无论是与两者都有各自的位置。
如果你觉得开放和友好,使用$_REQUEST
。 如果你觉得法西斯,只有你所期望的允许。 如果你觉得哈克,同时使用和区分,比如允许通过GET编码,并鼓励为书签的页面保持半永久配置,同时用严格挥发性的东西填充后。
原因之一,你可能会真的,真的要禁止GET是密码字段等。 你不希望你的用户(不知不觉中)存储在浏览器历史记录他们的敏感数据,所以不鼓励他们通过允许GET这样做。 OTOH,你可以从一个普通的“GET” <a href="">
因此,如果您导出任何API为“任何人使用”,提供单独或同时支持GET。
文章来源: Is there any real reason to differentiate between POST and GET when handling incoming data?