2011-09-21 34 views
10

Tôi đang làm việc với API yêu cầu tôi thực hiện yêu cầu HTTP PATCH như một phần của URI, điều này có thể làm từ Javascript, nghiên cứu của tôi cho thấy rằng tôi chỉ có thể thực hiện POST, GET, DELETE và PUT. PATCH có được phép không?Bạn có thể thực hiện yêu cầu HTTP PATCH từ Javascript không?

Cảm ơn bạn,

+1

Hầu hết các trình duyệt đều giới hạn các phương thức HTTP thành POST/GET, hỗ trợ cho những người khác đang bị vá, ví dụ IE9 xóa, tôi chưa thấy nó trong mọi trình duyệt. Để có kết quả tốt nhất, hãy tái cụm từ câu hỏi của bạn về hỗ trợ trình duyệt cho Phương thức HTTP. – Incognito

+4

Giới hạn trình duyệt đối với POST/GET áp dụng cho việc gửi biểu mẫu HTML, chứ không phải XmlHttpRequest. –

Trả lời

2

Tôi không chắc chắn những gì bạn biết chính xác ý nghĩa của một "Patch" yêu cầu, nhưng nó có vẻ là tốt (ít nhất trong Firefox 6 và Chromium 12). Theo số Mozilla source code, chỉ có giới hạn của các yêu cầu TRACETRACK.

Một testcase nhanh:

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

Bất kỳ máy chủ web có thể được sử dụng, nhưng tôi chọn cho module SimpleHTTPServer của Python.

$ 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 - 

Vì vậy, miễn là máy chủ hỗ trợ phương thức, yêu cầu của bạn sẽ được chuyển.

+1

Đúng. Có một vài trình duyệt cũ có thể gặp sự cố với phương pháp "tiện ích mở rộng"; Microsoft đã sửa lỗi này trong IE8 hoặc IE9. Trong các trình duyệt IE cũ hơn, bạn có thể quay trở lại đối tượng XHR ActiveX không có giới hạn đó. –

-3

Tính đến một số nghiên cứu phương pháp PATCH có vẻ là mới (tháng 3 năm 2010 http://tools.ietf.org/html/rfc5789) vì vậy nếu bạn cố gắng để xác định PATCH trên một XMLHttpRequest nó có thể làm việc, nhưng chỉ trên rất phiên bản mới nhất của các trình duyệt hiện đại. Chưa tìm thấy danh sách trình duyệt được hỗ trợ.

+4

Không chính xác. Trình duyệt không cần phải "biết" một phương thức để hỗ trợ nó trong XmlHttpRequest. –

+0

@JulianReschke việc thực hiện XHR (không phải là hương vị activeX) trong IE8 không hỗ trợ phương pháp PATCH. – Knu

Các vấn đề liên quan