当前位置:  开发笔记 > 编程语言 > 正文

GET与POST最佳实践

如何解决《GET与POST最佳实践》经验,为你挑选了3个好方法。

对于我的Web应用程序(PHP/MYSQL),我显示了一个项目列表和每行上的链接以删除该项目.现在,链接是

Delete Item

如果我想使用POST而不是...我该怎么做(这是一个动态生成的列表)?我可以在不使用表单的情况下发送POST数据吗?

或者,对于每件物品,我都必须这样做:

并将提交按钮设置为原始链接?

我不熟悉php CURL或REST,它们有助于解决这个问题吗?



1> cherouvim..:

请将POST用于修改数据库中持久状态的任何内容.您不希望抓取工具访问您的删除链接!
阅读万维网架构,第一卷和URI,可寻址性以及 W3C 对HTTP GET和POST的使用.

编辑:有时虽然你需要使用GET.例如,在电子邮件中发送的成员资格激活URL是GET,需要以某种方式修改数据库.



2> Chris AtLee..:

通常,以某种方式修改系统状态的GET请求(如删除项目)并不是一个好主意.

您的表单可能如下所示:

Delete item


这是此用例的"最佳实践"方法 - 提交表单的链接.
比链接更好的是提交按钮.没有JavaScript的工作,当你中间点击它时不会感到困惑,等等.如果您希望它看起来像一个链接,您可以使用CSS重新设置它,因此它看起来不像一个按钮.
就个人而言,我更喜欢链接到确认页面.此页面有一个表单,当POST'ed时 - 删除该条目并重定向回列表.如果你想离开确认页面,至少使用一个提交按钮,而不是一个带有javascript的标签.按钮不应该像链接.

3> Brian Campbe..:

您不应该从GET请求中更改数据库中的任何内容(除了记录信息或其他短暂数据).问题是存在各种网络抓取软件,网络加速器,反病毒程序等,它们会对他们找到的每个网址执行GET请求; 您不希望他们在这样做时自动删除项目.GET也容易受到跨站点请求伪造的攻击; 如果攻击者让你的一个用户点击执行不良操作的链接(例如,创建一个重定向到删除URL的tinyurl),那么他们可以欺骗用户使用他们的权限删除某些东西而不会意识到它.

是的,您需要提交一个表单来创建POST请求.另一种选择是使用JavaScript和XMLHttpRequest,但这对禁用JavaScript的用户不起作用.

您还应确保一旦接收了POST请求中的数据,而不是返回新页面以响应该请求,您应该将用户重定向到GET请求访问的页面.这样,如果他们点击重新加载,他们就不会意外地重新发送POST请求,或者在他们的浏览会话中稍后点击他们的后退按钮.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有