应该在表单中使用 PUT 和 DELETE 吗?
Posted
技术标签:
【中文标题】应该在表单中使用 PUT 和 DELETE 吗?【英文标题】:Should PUT and DELETE be used in forms? 【发布时间】:2011-07-06 23:38:24 【问题描述】:假设我的 Web 应用程序在服务器端完全支持 PUT 和 DELETE,我应该使用它们吗?
基本上我的问题是有多少浏览器支持这个:
<form method="PUT">
或
<form method="DELETE">
除了兼容 REST 之外,使用这两种 HTTP 方法还有什么好处吗? (假设这两种方法的替换是常用的POST)
【问题讨论】:
【参考方案1】:不,GET
和 POST
是 method
属性的唯一有效 HTTP 方法值。请参阅html spec 了解更多信息。
我相信您可以在 AJAX 请求中使用它们。
【讨论】:
链接已损坏。【参考方案2】:您的问题涉及两个密切相关但独立的标准,HTTP 和 HTML。 PUT 和 DELETE 方法是 HTTP 的一部分。在 HTTP 中,它们在 RESTful 接口和其他基于 HTTP 的服务(如 Webdav)中有着明显的用途。
直到版本 4 的 HTML 仅定义了表单的 POST 和 GET 使用。此时的 HTML5 似乎可以支持更多的方法。 [注意,当前的 w3 草案中不包含支持]
任何当前的浏览器支持(我不直接知道任何支持)都将非常有限,并且仅作为最前沿的实验才真正有用。
【讨论】:
当前的 HTML5 草稿不支持表单中的PUT
或DELETE
。相关部分目前在“最后一次调用 cmets”中,因此可能它们将被实施,但不幸的是它看起来不像。我认为它曾经在那里,然后被移除。
关于浏览器支持,mozilla 对 FF4 有兴趣,这表明他们确实支持它但现在已将其删除 - bugzilla.mozilla.org/show_bug.cgi?id=600813。
@andrew 确实,它在几年前一直是草案的一部分,但在去年年底被删除。我的意图不是暗示它将成为标准的一部分,只是它可能是。
我对删除这些方法感到非常失望,因为它们很有意义。有没有人有这个决定背后的原因的链接?。
@Triztian w3.org/Bugs/Public/show_bug.cgi?id=10671 全文:programmers.stackexchange.com/a/211790/26123【参考方案3】:
GET、POST、PUT 和 DELETE(还有其他)是 HTTP 标准的一部分,但目前仅限于 HTML 表单中的 GET 和 POST。
正如 Andrew 所说,您可以在 AJAX 请求中使用 PUT 和 DELETE;但是,这只适用于某些浏览器(请参阅http://api.jquery.com/jQuery.ajax/)。
【讨论】:
以上是关于应该在表单中使用 PUT 和 DELETE 吗?的主要内容,如果未能解决你的问题,请参考以下文章
SpringMVC的controller提供了PUT和DELETE的请求方式怎么使