2011-09-21 198 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

相關問題