Joh*_*kin 596 browser ajax http cross-browser
我在这里看到了几个问题,例如如何调试RESTful服务,其中提到:
不幸的是,相同的浏览器不允许我测试HTTP PUT,DELETE,甚至在某种程度上测试HTTP POST.
我也听说过浏览器只支持GET和POST,来自其他一些来源:
但是,Firefox中的一些快速测试显示发送PUT
和DELETE
请求按预期工作 - XMLHttpRequest
成功完成,并且请求以正确的方法显示在服务器日志中.我是否缺少某些方面,例如跨浏览器兼容性或非明显的限制?
Mat*_*och 457
HTML表单(最高为HTML版本4和XHTML 1)仅支持GET和POST作为HTTP请求方法.解决方法是使用隐藏的表单字段通过POST隧道其他方法,该字段由服务器读取并相应地分派请求.
然而,GET,POST,PUT和DELETE 都通过了XMLHttpRequest中的所有主流浏览器(IE,火狐,Safari,Chrome浏览器,Opera)的实现方式(即AJAX调用)的支持.
Ann*_*nne 78
HTML表单支持GET和POST.(HTML5在某一点上添加了PUT/DELETE,但这些都被删除了.)
XMLHttpRequest支持每个方法,包括CHICKEN,尽管某些方法名称不区分大小写(方法对每个HTTP区分大小写),并且出于安全原因(例如CONNECT)根本不支持某些方法名称.
浏览器正在慢慢收敛于XMLHttpRequest指定的规则,但正如另一条评论指出的那样,仍然存在一些差异.
Vih*_*ung 41
XMLHttpRequest
是JavaScript对象模型中的标准对象.
根据维基百科,XMLHttpRequest
首次出现在Internet Explorer 5中作为ActiveX对象,但从那时起已被制作成标准,并且自1.0,Apple Safari 1.2,Opera 7.60-p1和IE 7.0以来已被包含在Mozilla家族的JavaScript中使用.
该open()
方法在对象上采用作为参数的HTTP方法-和被指定为采取任何有效的HTTP方法(参见链路的项目号5) -包括GET
,POST
,HEAD
,PUT
和DELETE
,作为由RFC 2616中指定.
Cir*_*四事件 17
_method
隐藏的字段解决方法
在Rails中使用,可以适应任何框架:
将隐藏_method
参数添加到任何非GET或POST的表单:
<input type="hidden" name="_method" value="DELETE">
Run Code Online (Sandbox Code Playgroud)
这可以通过HTML创建帮助器方法(例如Rails form_tag
)在框架中自动完成
将实际的表单方法修复为POST(<form method="post"
)
_method
服务器上的进程,就像发送了该方法而不是实际的POST一样
不可能的原因/历史:https://softwareengineering.stackexchange.com/questions/114156/why-there-are-no-put-and-delete-methods-in-html-forms
Han*_*Gay 15
我相信这些评论专门针对浏览器,即点击链接和提交表单,而不是XMLHttpRequest
.XMLHttpRequest
仅仅是一个定制的客户端,你在使用浏览器作为运行的JavaScript写的.
更新:澄清一下,我并不是说(尽管我写了)你写的XMLHttpRequest
; 我的意思是你编写了使用的代码XMLHttpRequest
.浏览器本身不支持XMLHttpRequest
.XMLHttpRequest
来自JavaScript运行时,可以由浏览器托管,但不需要(请参阅Rhino).这就是为什么人们说的浏览器不支持PUT
和DELETE
-因为它实际上是支持他们的JavaScript.
是,PUT,DELETE,HEAD等HTTP方法在所有现代浏览器中都可用.
要符合XMLHttpRequest Level 2,浏览器必须支持这些方法.要检查哪些浏览器支持XMLHttpRequest Level 2,我建议使用CanIUse:
只有Opera Mini缺乏支持atm(juli '15),但Opera Mini缺乏对所有内容的支持.:)
小智 7
只是添加 - Safari 2及更早版本肯定不支持PUT和DELETE.我得到的印象是3,但我不再需要它来测试了.Safari 4肯定支持PUT和DELETE.
归档时间: |
|
查看次数: |
229877 次 |
最近记录: |