我刚刚为我的最新应用程序之一构建了一个RESTful API。我还构建了一个简单的管理界面脚手架类,它将枚举资源并构建简单的表单和表格以编辑,创建,删除等。为什么现代浏览器不支持PUT和DELETE表单方法?
为了更新和删除资源,该类使用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="[email protected]" />
<input type="submit" value="Update" />
</form>
很简单。如果检测到Javascript,那么它会拦截表单并使用XMLHTTPRequest来提交回来。 Javascript支持其他HTTP方法,但为什么现代浏览器不支持PUT和DELETE方法?它最终发送一个GET。
我更喜欢当应用程序正常回退到使用相同方法的标准HTML时,而不必使用隐藏字段和类中的逻辑,或者更糟糕的是,将方法放在URI中并且允许GET工作。
我想不出任何浏览器为什么不支持其他HTTP方法,因为开发人员只是通过黑客GET或使用POST来解决它。
我搜索了一个答案,并能够找到它指定为the XHTML 2.0 spec的一部分。没有提及它in the HTML5 spec。
“HTML5兼容”浏览器不支持它的任何原因吗?我可以在哪里发布请求来打开此备份并在浏览器中实现?
确定有关@JoostBaaij我没有尝试自己,但MDN只字不提它https://developer.mozilla.org/en-US/docs/Web/HTML/Element /表格 – 2013-10-22 16:00:14
@JoostBaaij只需双重检查。提交此表格http://jsbin.com/IWoWiRi/1/然后在这里检查请求http://requestb.in/ol62w4ol?inspect Chrome30,FF24,IE10'method =“PUT”'all显示为'GET '所以我很抱歉,但你错了。 – 2013-10-22 16:08:35
如果没有,您仍然可以在端口80上打开telnet连接,并使用客户端脚本启动命令。 – user2284570 2013-10-22 20:04:30