为什么不使用其余的HTTP动词?

时间:2011-05-03 11:10:45

标签: http browser protocols httpverbs

大多数情况下,网站主要仅对所有操作使用GETPOST,但其中有seven more verbs。他们在旧时代使用的地方,但现在却没有那么多?

或许是因为某些浏览器无法识别其他动词?如果是这种情况,为什么浏览器供应商会选择实施一半的协议呢?

[更新]

我发现这篇文章对情况做了很好的总结:Why REST failed

2 个答案:

答案 0 :(得分:5)

HTML规范是一个罪魁祸首,只是真正允许GET,POST和HEAD。它们虽然得到了很多使用,但在浏览器中并没有那么多。

其他crud-verbs(如PUT和DELETE)的最常见用法是REST服务和WebDAV。

您将在未来更多地看到OPTIONS,因为CORS规范(跨域xmlhttprequest)使用它。

TRACE在各地都非常残疾,因为它带来了相当大的安全风险。代理肯定会使用CONNECT。

PATCH是全新的。虽然我很奇怪他们决定将它添加到列表中(但不是PROPFIND,MKCOL,ACL,LOCK等),但我认为我们将来会看到它在RESTful服务中看起来更多。

附录:原始浏览器同时使用GET和PUT(后者用于更新网页)。在形式和POST请求进入规范之前,后来的浏览器几乎变为只读。

答案 1 :(得分:1)

它们中的大多数仍在使用,但不像GET或POST那么广泛。例如,RESTful Web服务使用PUT&删除以及GET& POST:

RESTful Web Service - Wiki Article

HEAD对HTTP头的服务器调试非常有用,但由于它没有返回响应主体,因此它对浏览器/普通Web访问者没什么用处...

其他动词如TRACE并不普及,因为存在潜在的安全问题等。维基文章中简要提到:

HTTP Protocol Methods - Wiki Article