【问题标题】:Should I use POST or DELETE verb in jQuery.ajax() function我应该在 jQuery.ajax() 函数中使用 POST 还是 DELETE 动词
【发布时间】:2011-01-18 12:20:00
【问题描述】:

这是来自 jQuery API 文档:

类型字符串 默认值:“获取” 要发出的请求类型(“POST”或“GET”),默认为“GET”。注意:这里也可以使用其他 HTTP 请求方法,例如 PUT 和 DELETE,但并非所有浏览器都支持。

我将使用 jQuery 制作 AJAX 删除链接。我想知道的是关于浏览器对 DELETE 和 PUT 的支持的细节。哪些浏览器支持它?我只使用 POST 更安全吗?

鉴于我在 ASP.NET MVC 中工作,我可以使用 DELETE 和 POST 来装饰我的控制器操作,因此两者都可以被接受。

【问题讨论】:

标签: jquery asp.net-mvc


【解决方案1】:

使用 POST。您不必担心浏览器的支持,您的代码的未来维护者会很好地理解发生了什么。

【讨论】:

【解决方案2】:

如果您所做的只是删除具有特定 ID 的项目,GET 应该适合您的目的:http://www.diffen.com/difference/Get_vs_Post

只要确保您处理有人试图删除已删除的内容的情况

【讨论】:

  • GET 是一个的事情,当你的 URL 操作一些像数据库这样的持久性存储时。如果搜索引擎跟踪它怎么办?
  • GET 没办法。安全风险。
【解决方案3】:

您可以使用 POST,然后将名为 X-HTTP-Method-Override 的表单字段设置为 DELETE。

有关具体示例,请参阅 SO 问题 #467535:

Is it possible to implement X-HTTP-Method-Override in ASP.NET MVC?

【讨论】:

  • 那个答案已经过时了。这是 MVC 2 内置的。
【解决方案4】:

从表单值中提取并发送请求,在表单中调用 Html.HttpMethodOverride(HttpVerbs.Delete)。

【讨论】:

    猜你喜欢
    • 2011-01-12
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    相关资源
    最近更新 更多