asp.net-mvc - 使用 GET 而不是 POST 删除经过身份验证的页面后面的数据

标签 asp.net-mvc http crud

<分区>

我知道只要在公共(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)请求,则执行删除。

关于asp.net-mvc - 使用 GET 而不是 POST 删除经过身份验证的页面后面的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2427247/

相关文章:

java - 使用 Java 更新 MongoDB 中的特定字段而不是整个文档

asp.net-mvc - Entity Framework 不返回相关对象

javascript - 上传视频时出现内部服务器错误。但上传图片工作正常。可能会出现什么问题?

用于启动服务的 Http/REST 方法

ruby - 使用 body_stream 和参数发布请求

java - 我应该/可以制定 Struts 2 约定来忘记操作的 execute() 方法吗?

javascript - 我的 JavaScript 格式有问题吗?

c# - ASP.NET MVC,创建将多个对象返回到 View 的 View 方法

java - res.flushBuffer() 与 res.getOutputStream().flush();

frameworks - 什么是脚手架?它是特定平台的术语吗?