【发布时间】: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 兼容'浏览器不支持它的任何原因?我可以在哪里发布请求以打开此备份并在浏览器中实现它?
【问题讨论】:
-
你确定@JoostBaaij 我自己没有尝试过,但 MDN 没有提到它developer.mozilla.org/en-US/docs/Web/HTML/Element/form
-
@JoostBaaij 刚刚仔细检查。提交此表单 jsbin.com/IWoWiRi/1 然后在此处检查请求 requestb.in/ol62w4ol?inspect 在 Chrome30、FF24、IE10 中
method="PUT"都显示为GET所以我很抱歉,但你错了。 -
如果没有,您仍然可以在端口 80 上打开 telnet 连接并使用客户端脚本启动命令。
-
@user2284570 你是什么意思?问题在于
<form>元素不支持method=PUT与这些有什么关系?
标签: html browser specifications