【问题标题】:Why don't the modern browsers support PUT and DELETE form methods?为什么现代浏览器不支持 PUT 和 DELETE 表单方法?
【发布时间】:2011-07-07 20:22:22
【问题描述】:

我刚刚为我的一个最新应用程序构建了一个 RESTful API。我还构建了一个简单的管理界面脚手架类,它将枚举资源并构建简单的表单和表格以进行编辑、创建、删除等。

对于更新和删除资源,该类输出一个带有 PUT 和 DELETE 方法的表单,非常简单:

<form action="/posts/xxxxxxx" method="DELETE">
<input type="submit" value="Delete" />
</form>

<form action="/posts/xxxxxxx" method="PUT">
<input type="text" name="username" value="nikcub" />
<input type="text" name="fullname" value="Nik Cubrilovic" />
<input type="text" name="email" value="nikcub@email.com" />
<input type="submit" value="Update" />
</form>

非常简单。如果检测到 Javascript,它将拦截表单并使用 XMLHTTPRequest 提交回来。 Javascript 支持其他 HTTP 方法,但为什么现代浏览器不支持 PUT 和 DELETE 方法?它最终发送一个GET。

我希望当应用程序优雅地回退到使用相同方法的标准 HTML 时,而不是必须在类中使用隐藏字段和逻辑,或者更糟的是,将方法放在 URI 中并允许开始工作。

我想不出浏览器不支持其他 HTTP 方法的任何原因,因为开发人员只是通过破解 GET 或使用 POST 来解决它。

我搜索了一个答案,发现它被指定为the XHTML 2.0 spec 的一部分。没有提到它in the HTML5 spec

'HTML5 兼容'浏览器不支持它的任何原因?我可以在哪里发布请求以打开此备份并在浏览器中实现它?

【问题讨论】:

标签: html browser specifications


【解决方案1】:

实际上我做了非常少量的研究并在其他 Stackexchange 论坛上找到了这个答案。

我知道发布链接不是一个好的答案,但我不知道确切的答案。所以,只有这样才能解决你的疑惑。

https://softwareengineering.stackexchange.com/questions/114156/why-there-are-no-put-and-delete-methods-in-html-forms

【讨论】:

  • 从技术上讲,这已经在 cmets 中注意到了,但是是的。我认为这可以作为答案。
【解决方案2】:

一些网络框架(例如 Ruby on Rails)通过在表单中​​包含一个隐藏的 _method 参数以及“实际”方法的值来解决这个问题,例如:

<form action="/posts/xxxxx" method="POST">
    <input type="hidden" name="_method" value="DELETE">
    <input type="submit" value="delete">
</form>

然后框架在处理之前在服务器端重写请求以使用_method参数的值作为HTTP方法。

不知道对你有没有帮助。

【讨论】:

【解决方案3】:

HTML 4.01 仅支持发布和获取,请参阅 http://www.w3.org/TR/html4/interact/forms.html#h-17.3 不确定其他 HTML 规范。

【讨论】:

猜你喜欢
  • 2013-05-24
  • 1970-01-01
  • 2021-03-24
  • 2020-01-29
  • 1970-01-01
  • 2011-10-01
  • 2019-02-12
  • 1970-01-01
相关资源
最近更新 更多