在大多数web浏览器中是否有PUT、DELETE、HEAD等方法?

我在这里看到了一些问题,比如如何调试RESTful服务,其中提到:

不幸的是,同一个浏览器不允许我测试HTTPPUT、DELETE,甚至在某种程度上测试HTTPPOST

我还听说浏览器只支持GET和POST,其他来源包括:

  • http://www.packetizer.com/ws/rest.html
  • http://www.mail-archive.com/[email protected]/msg13518.html
  • http://www.xml.com/cs/user/view/cs_msg/1098

然而,Firefox中的一些快速测试表明,发送PUTDELETE请求的效果与预期一样–XMLHttpRequest成功完成,请求以正确的方法显示在服务器日志中。我是否缺少一些方面,例如跨浏览器兼容性或不明显的限制

否。HTML 5规范提到:

method和formmethod内容属性是枚举属性
具有以下关键字和状态:

关键字get,映射到状态get,表示HTTP get
方法GET方法应该只请求和检索数据以及
应该没有其他影响

关键字post,映射到状态
POST,指示HTTP POST方法。POST方法要求
服务器接受要处理的提交表单的数据,这可能会导致
导致一个项目被添加到数据库中,即创建一个新的web
页面资源、现有页面的更新或所有
提到成果

关键字对话框,映射到状态对话框,表示
提交表单旨在关闭对话框,其中
表单发现自己(如有)未提交

这些属性的默认无效值是GET状态

也就是说,HTML表单只支持GETPOST作为HTTP请求方法。解决方法是使用隐藏的表单字段(服务器读取该字段并相应地发送请求),通过POST隧道其他方法

然而,GETPOSTPUTDELETE都受到所有主要web浏览器(如Firefox、Safari、Chrome、Opera)中XMLHttpRequest(即AJAX调用)实现的支持

发表评论