我知道只要在公共(public)网站上修改数据,您就应该使用 POST。有几个原因,包括搜索引擎将跟踪所有链接并修改数据。
我的问题是,您认为在管理界面之类的经过身份验证的页面后面使用 GET 可以吗?
一个例子是每行都有一个删除链接的产品列表。由于访问该页面的唯一方法是登录,因此仅在查询字符串中使用带有产品 ID 的链接是否有任何危害?
评论的详细说明:
我个人在使用 POST 实现删除方面没有任何问题或困难。我刚刚在 ASP.NET 和 ASP.NET MVC 中看到了几个使用 GET 而不是 POST 的“类似管理员”页面的代码示例。我很好奇人们对此事的看法。
使用 GET 的诱惑在于您可以创建一堆删除链接,而无需在每个页面上创建几十个表单,也不必求助于 JavaScript。然而,由于已经提到的各种原因,网络依赖于 GET 不具有破坏性。
如果在服务器上为每个删除链接生成一个小表单是不切实际的,那么最佳做法是使用 GET 链接从服务器加载一个确认页面,该页面有一个执行的 POST 表单删除。然后做一些渐进增强:
<a href="/controller/delete/1" onclick="$.post(this.href); return false;">Delete</a>
如果服务器获得到/controller/delete/x 的 GET,则提供一个带有 POST 表单的确认页面。如果服务器收到 POST(或可能是 DELETE)请求,则执行删除。