Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 在大多数web浏览器中是否有PUT、DELETE、HEAD等方法?_Http_Cross Browser_Browser_Ajax - Fatal编程技术网

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

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

我在这里看到了一些问题,比如,其中提到:

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

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


然而,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表单只支持GETPOST作为HTTP请求方法。解决方法是使用隐藏的表单字段(服务器读取该字段并相应地发送请求),通过POST隧道其他方法

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

支持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是