2011-09-21 43 views
10

我正在使用一个API,它要求我将HTTP PATCH请求作为URI的一部分,这是否可以通过Javascript完成,我的研究显示我只能执行POST,GET,DELETE和PUT。是否允许PATCH?你可以从Javascript发出HTTP PATCH请求吗?

谢谢

+1

大多数浏览器将HTTP方法限制为POST/GET,对其他方法的支持是不完整的,例如IE9会执行删除,但是我没有在每个浏览器中看到它。为了获得最佳效果,请重新说明有关HTTP方法的浏览器支持的问题。 – Incognito

+4

对POST/GET的浏览器限制适用于HTML表单提交,而不适用于XmlHttpRequest。 –

回答

2

我不知道你到底是由一个“补丁”的要求意味着,但它似乎是可能的(至少在Firefox 6和铬12)。根据Mozilla source code,只有TRACETRACK请求的限制。

快速测试用例:

<!-- test.html --> 
<script> 
var x=new XMLHttpRequest(); 
x.open("patch", "/"); 
x.send(null); 
</script> 

任何Web服务器都可以使用,但我选择Python的SimpleHTTPServer模块。

$ ls 
test.html 
$ python -m SimpleHTTPServer 
localhost - - [21/Sep/2011 17:32:11] "GET /test.html HTTP/1.1" 200 - 
localhost - - [21/Sep/2011 17:32:11] code 501, message Unsupported method ('patch') 
localhost - - [21/Sep/2011 17:32:11] "patch/HTTP/1.1" 501 - 

所以,只要服务器支持该方法,请求就会通过。

+1

是的。有几个传统浏览器可能会遇到“扩展”方法的问题;微软在IE8或IE9中解决了这个问题。在较老的IE中,可以回退到没有该限制的XHR ActiveX对象。 –

-3

正如一些研究PATCH方法似乎是新的(2010年3月http://tools.ietf.org/html/rfc5789),所以如果你试图在一个XMLHttpRequest定义PATCH它可以工作,但只能在非常现代的浏览器最新版本。尚未找到支持的浏览器列表。

+4

不正确。浏览器不需要“知道”一种方法,以便在XmlHttpRequest中支持它。 –

+0

@JulianReschke IE8中的XHR(不是activeX flavor)的实现不支持PATCH方法。 – Knu

相关问题