Http 在大多数web浏览器中是否有PUT、DELETE、HEAD等方法?
我在这里看到了一些问题,比如,其中提到: 不幸的是,同一个浏览器不允许我测试HTTPPUT、DELETE,甚至在某种程度上测试HTTPPOST 我还听说浏览器只支持GET和POST,其他来源包括:Http 在大多数web浏览器中是否有PUT、DELETE、HEAD等方法?,http,cross-browser,browser,ajax,Http,Cross Browser,Browser,Ajax,我在这里看到了一些问题,比如,其中提到: 不幸的是,同一个浏览器不允许我测试HTTPPUT、DELETE,甚至在某种程度上测试HTTPPOST 我还听说浏览器只支持GET和POST,其他来源包括: 然而,Firefox中的一些快速测试表明,发送PUT和DELETE请求的效果与预期一样--XMLHttpRequest成功完成,请求以正确的方法显示在服务器日志中。是否有一些方面我没有注意到,例如跨浏览器兼容性或不明显的限制?我相信这些评论是专门针对浏览器的,即单击链接和提交表单,而不是XM
然而,Firefox中的一些快速测试表明,发送
PUT
和DELETE
请求的效果与预期一样--XMLHttpRequest
成功完成,请求以正确的方法显示在服务器日志中。是否有一些方面我没有注意到,例如跨浏览器兼容性或不明显的限制?我相信这些评论是专门针对浏览器的,即单击链接和提交表单,而不是XMLHttpRequest
XMLHttpRequest
只是一个自定义客户端,您用JavaScript编写,它将浏览器用作运行时
更新:澄清一下,我并不是说(尽管我写过)你写了
XMLHttpRequest
;我的意思是您编写了使用XMLHttpRequest
的代码。浏览器本机不支持XMLHttpRequest
XMLHttpRequest
来自JavaScript运行时,该运行时可能由浏览器托管,但并不需要(请参阅)。这就是为什么人们说浏览器不支持PUT
和DELETE
——因为实际上是JavaScript支持它们。XMLHttpRequest
是JavaScript对象模型中的标准对象
根据维基百科的说法,它最初是作为ActiveX对象出现在InternetExplorer5中的,但后来成为了一个标准,并从1.0、Apple Safari 1.2、Opera 7.60-p1和IE 7.0开始在Mozilla家族的JavaScript中使用
在对象上,将HTTP方法作为参数-并指定为使用任何有效的HTTP方法(请参见链接的项目编号5)-包括GET
、POST
、HEAD
、PUT
和DELETE
,如下所示
作为旁注。否。提及:
method和formmethod内容属性是枚举属性
具有以下关键字和状态:
关键字get,映射到状态get,表示HTTP get
方法。GET方法应该只请求和检索数据以及
应该没有其他影响
关键字post,映射到状态
POST,指示HTTP POST方法。POST方法要求
服务器接受要处理的提交表单的数据,这可能会导致
导致一个项目被添加到数据库中,即创建一个新的web
页面资源、现有页面的更新或所有
提到成果
关键字对话框,映射到状态对话框,表示
提交表单旨在关闭对话框,其中
表单发现自己(如有)未提交
这些属性的默认无效值是GET状态
也就是说,HTML表单只支持GET和POST作为HTTP请求方法。解决方法是使用隐藏的表单字段(服务器读取该字段并相应地发送请求),通过POST隧道其他方法
但是,所有主要web浏览器(如Firefox、Safari、Chrome、Opera)中的XMLHttpRequest实现(即AJAX调用)都支持GET、POST、PUT和DELETE。支持GET和POST。(HTML5曾一度添加了PUT/DELETE,但这些都被删除了。)
支持所有方法,包括CHICKEN,但有些方法名称不区分大小写(每个HTTP的方法区分大小写),有些方法名称出于安全原因(例如CONNECT)根本不受支持
还支持除出于安全原因的CONNECT、TRACE和TRACK之外的任何方法
浏览器正在慢慢地向XMLHttpRequest指定的规则靠拢,但正如另一条评论指出的那样,仍然存在一些差异。只是为了添加—Safari 2和更早版本显然不支持PUT和DELETE。我得到的印象是3,但我已经没有它来测试了。Safari 4绝对支持放置和删除。
\u方法
隐藏字段解决方法
用于Rails,可适用于任何框架:
- 将隐藏的
参数添加到任何未获取或发布的表单:\u方法
<input type="hidden" name="_method" value="DELETE">
这可以通过HTML创建助手方法在框架中自动完成(例如Rails
)form_tag
- 将实际的表单方法修复为POST(
是),PUT、DELETE、HEAD等HTTP方法在所有现代浏览器中都可用 要与浏览器兼容,必须支持这些方法。要检查哪些浏览器支持XMLHttpRequest级别2,建议使用:
只有Opera Mini不支持atm(juli'15),但Opera Mini缺乏对所有内容的支持。不,我肯定是指HTML(我指的是HTML表单功能,尽管文本中可能不清楚-我会编辑它)@Matthew:这是否意味着如果我使用IE6或IE7,则会出现以下情况:-。。。它将不起作用,因为PUT对HTML 4?@Pure.Krome无效(仅14个月后)。不,您不能这样做或在HTML 4.01规范下。IE8、Chrome3或FF3.5只支持GET和POST。@porneL@Alan HTML5添加了它们,然后删除了它们。目前只允许GET和POST@色情HTML5添加了它们,然后删除了它们,现在这个bug被重新打开。有趣的是,我看到了一些文档,其中仍然有它们。如果您想在家里跟进,这里有一个bug:XMLHttpRequest是