【问题标题】:Fine Grained rest HTTP verbs browser support细粒度的 REST HTTP 动词浏览器支持
【发布时间】:2010-07-10 05:57:33
【问题描述】:

是否有任何关于浏览器实际上如何支持 rest http 动词(尤其是 PUT、DELETE)的数据。这个问题主要是因为许多来源(例如 stackoverflow answer)告知大多数浏览器不支持 PUT 和 DELETE,但没有说明是哪个。

Rails 使用客户端上的补丁解决了这个问题,并在服务器上反转了补丁,但我想知道,例如,哪些浏览器不需要这种破解。

【问题讨论】:

  • 这和浏览器有什么关系?
  • Jonh:其中一些无法执行 PUT DELETE 查询。这在 ajax 查询中最为重要,因为好的旧表单无法按照规范执行此操作。此外,在 RESTful Web 服务上,PUT 和 DELETE 背后的语义很重要。

标签: http rest cross-browser http-method


【解决方案1】:

如有疑问,ask Anne:

http://annevankesteren.nl/2007/10/http-method-support

它已经有几年的历史了,但它为 PUT 和 DELETE 提供了一个干净的健康证明,但它也尝试了更模糊的动词的不同情况,如 TRACE 和 PROPFIND:

Van Kesteren 测试了 Firefox 3、Opera 9.5 和 Internet Explorer 7,包括预发布版和发布版。 GET 和 POST 按预期工作,并且都支持 RFC 2616 中的标准 http 方法集。存在一些大小写问题,因此您应该始终尝试使用大写; TRACE 和 OPTIONS 分别是 Firefox 和 Opera 中存在问题的边缘案例。 CONNECT 和 TRACE 和 SEARCH 对于 IE 来说是有问题的。请记住,这是 2007 年写的,所以 YMMV。

我认为对于不支持 GET 和 POST 以外的浏览器的全部混淆源于 HTML 规范HTML <form> element 中列出这两个:

FORM 元素的method 属性指定用于将表单发送到处理代理的HTTP 方法。该属性可能有两个值:

  • get:使用 HTTP“get”方法,将表单数据集附加到 action 属性指定的 URI(以问号(“?”)作为分隔符)并发送这个新的 URI给处理代理。

  • post:使用HTTP“post”方法,表单数据集包含在表单主体中并发送到处理代理。

这就是为什么浏览器在 HTML 中只支持原生的 GET 和 POST 的原因;因为标准是这样说的。

另一方面,当前(2014 年 1 月)XMLHttpRequest specification 明确指出,除了某些例外(CONNECT、TRACE 或 TRACK)外,应允许请求方法通过,并且 RFC2616 方法应大写:

\6.如果方法是对 CONNECT、DELETE、GET、HEAD、OPTIONS、POST、PUT、TRACE 或 TRACK 的不区分大小写匹配,则从 0x61 (ASCII a) 到 0x7A (ASCII z) 范围内的每个字节中减去 0x20。

如果不符合上述任何一项,则按字面意思传递,包括在最终请求中。

编辑另一个或多或少得出相同结论的来源:XMLHttpRequest 支持 PUT 和 DELETE:http://jshirley.vox.com/library/post/xmlhttprequest-and-rest.html(警告,截至 2014 年 5 月的链接断开)。

编辑问题当然是asked before,但两年前的答案仍然有效。

编辑 Anne van Kesteren 2007 年页面的简短简历,并添加了关于 HTML 与 XMLHttpRequest 的部分

【讨论】:

  • 是的,它很旧。但是,我想这是可悲的,我们拥有的最好的,没有将人们众包到mnot.net/javascript/xmlhttprequest
  • Anne Van Kesteren 的链接已失效。当回答来自其他网站的来源时,您应该在此处转录它们以避免在链接失效时丢失信息。 :(
  • 原则上我不得不同意。在我的辩护中,当我引用它们并测试当时的浏览器版本时,这些来源已经有整整三年的历史了。现在他们7岁了。我发现 AVK 链接工作正常,但另一方面 jshirley 给了我一个空白的凝视。我会看看我能做什么。
  • @AlejandroIglesias 希望您对我的编辑感到满意 :-)
【解决方案2】:

请参阅 Atom Wiki 的 PutDeleteSupport 页面。您可能有兴趣浏览与 HTTP 相关的其他 Atom Wiki 页面。

【讨论】:

  • 谢谢,但是这个实际上只显示了对语言客户端的支持。我正在寻找浏览器客户端的支持,例如chorme、firefox、ie、opera、opera mini等。
猜你喜欢
  • 2014-08-07
  • 2016-05-23
  • 1970-01-01
  • 2015-04-19
  • 2011-06-08
  • 1970-01-01
  • 2017-01-31
  • 1970-01-01
相关资源
最近更新 更多