是否有关于浏览器如何实际支持 rest http 动词(尤其是 PUT、DELETE)的数据。这个问题主要是因为许多来源(例如这个stackoverflow 答案)告知大多数浏览器不支持 PUT 和 DELETE 但不说是哪个。
Rails使用客户端上的补丁解决了这个问题,并反转了服务器上的补丁,但我想知道,例如,哪些浏览器不需要这种破解。
是否有关于浏览器如何实际支持 rest http 动词(尤其是 PUT、DELETE)的数据。这个问题主要是因为许多来源(例如这个stackoverflow 答案)告知大多数浏览器不支持 PUT 和 DELETE 但不说是哪个。
Rails使用客户端上的补丁解决了这个问题,并反转了服务器上的补丁,但我想知道,例如,哪些浏览器不需要这种破解。
如有疑问,请询问安妮:
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>
FORM 元素的方法属性指定用于将表单发送到处理代理的 HTTP 方法。该属性可能有两个值:
get:使用 HTTP“get”方法,表单数据集被附加到 action 属性指定的 URI(以问号(“?”)作为分隔符),并将这个新的 URI 发送到处理代理。
post:使用HTTP“post”方法,将表单数据集包含在表单主体中并发送到处理代理。
这就是为什么浏览器在 HTML 中只支持原生的 GET 和 POST 的原因;因为标准是这样说的。
另一方面,当前(2014 年 1 月)的XMLHttpRequest 规范明确指出,除了一些例外(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(警告,截至 5 月的链接断开2014)。
编辑当然,这个问题已经被问过了,但两年前的答案仍然有效。
编辑Anne van Kesteren 2007 年页面的简短简历,并添加了关于 HTML 与 XMLHttpRequest 的部分
请参阅 Atom Wiki 的PutDeleteSupport页面。您可能有兴趣浏览与 HTTP 相关的其他 Atom Wiki 页面。