我在这里看到了一些问题,比如如何调试RESTful服务,其中提到:
不幸的是,同一浏览器不允许我测试HTTP PUT、DELETE,甚至在某种程度上也不允许我测试HTTP POST。
我也听说过浏览器只支持GET和POST,从其他一些来源,比如:
http://www.packetizer.com/ws/rest.html
http://www.mail-archive.com/jmeter-user@jakarta.apache.org/msg13518.html
http://www.xml.com/cs/user/view/cs_msg/1098
但是,Firefox中的一些快速测试表明,发送PUT和DELETE请求的效果与预期一致——XMLHttpRequest成功完成,请求以正确的方法显示在服务器日志中。我是否忽略了某些方面,比如跨浏览器兼容性或不明显的限制?
YES, PUT, DELETE, HEAD等HTTP方法在所有现代浏览器中都可用。
为了与XMLHttpRequest兼容,2级浏览器必须支持这些方法。要检查哪些浏览器支持XMLHttpRequest Level 2,我建议CanIUse:
http://caniuse.com/#feat=xhr2
只有Opera Mini缺乏支持atm (juli '15),但Opera Mini缺乏对一切的支持。:)
不。HTML 5规范中提到:
The method and formmethod content attributes are enumerated attributes
with the following keywords and states:
The keyword get, mapping to the state GET, indicating the HTTP GET
method. The GET method should only request and retrieve data and
should have no other effect.
The keyword post, mapping to the state
POST, indicating the HTTP POST method. The POST method requests that
the server accept the submitted form's data to be processed, which may
result in an item being added to a database, the creation of a new web
page resource, the updating of the existing page, or all of the
mentioned outcomes.
The keyword dialog, mapping to the state dialog, indicating that
submitting the form is intended to close the dialog box in which the
form finds itself, if any, and otherwise not submit.
The invalid value default for these attributes is the GET state
也就是说,HTML表单只支持GET和POST作为HTTP请求方法。一种解决方法是使用隐藏的表单字段(由服务器读取并相应地分发请求)通过POST隧道其他方法。
然而,GET, POST, PUT和DELETE在所有主要的web浏览器(IE, Firefox, Safari, Chrome, Opera)中都支持XMLHttpRequest的实现(即AJAX调用)。
YES, PUT, DELETE, HEAD等HTTP方法在所有现代浏览器中都可用。
为了与XMLHttpRequest兼容,2级浏览器必须支持这些方法。要检查哪些浏览器支持XMLHttpRequest Level 2,我建议CanIUse:
http://caniuse.com/#feat=xhr2
只有Opera Mini缺乏支持atm (juli '15),但Opera Mini缺乏对一切的支持。:)
XMLHttpRequest是JavaScript对象模型中的一个标准对象。
根据维基百科的说法,XMLHttpRequest最初是作为一个ActiveX对象出现在Internet Explorer 5中,但后来成为了一个标准,并在Mozilla家族的1.0、Apple Safari 1.2、Opera 7.60-p1和IE 7.0中被包含在JavaScript中使用。
对象上的open()方法以HTTP方法作为参数-并指定为接受任何有效的HTTP方法(参见链接的第5项)-包括GET, POST, HEAD, PUT和DELETE,如RFC 2616所指定的。
附注IE 7-8只允许以下HTTP方法:"GET", "POST", "HEAD", "PUT", "DELETE", "MOVE", "PROPFIND", "PROPPATCH", "MKCOL", "COPY", "LOCK", "UNLOCK",和"OPTIONS"。