我可以在HTML表单中使用PUT方法将数据从表单发送到服务器吗?
根据HTML标准,你不能.method属性的唯一有效值是get和post,对应于GET和POST HTTP方法.是无效的HTML,将被视为,即发送GET请求.
get
post
相反,许多框架只是使用POST参数来隧道传输HTTP方法:
当然,这需要服务器端解包.
XHTML 1.x表单仅支持GET和POST.GET和POST是"method"属性唯一允许的值.
我可以在html表单中使用"Put"方法将数据从HTML表单发送到服务器吗?
是的,你可以,但请记住它不会导致PUT而是GET请求.如果method对标记的属性使用无效值,则浏览器将使用默认值get.
method
HTML表单(最高为HTML版本4(,5草稿)和XHTML 1)仅支持GET和POST作为HTTP请求方法.解决方法是使用隐藏的表单字段通过POST隧道其他方法,该字段由服务器读取并相应地分派请求.XHTML 2.0次计划支持GET,POST,PUT和DELETE的形式,但它进入XHTML5的HTML5,它不打算支持PUT.[更新到]
您也可以提供表单,但不是提交表单,而是使用带有JavaScript的PUT方法创建和触发XMLHttpRequest.
_method隐藏字段解决方法
Rails使用此方法,可以适应任何框架/项目:
将隐藏_method参数添加到任何非GET或POST的表单:
_method
这可以通过HTML创建帮助器方法(例如Rails _method)在框架中自动完成
将实际的表单方法修复为POST()
)
_method服务器上的进程,就像发送了该方法而不是实际的POST一样
不可能的原因/历史:https://softwareengineering.stackexchange.com/questions/114156/why-there-are-no-put-and-delete-methods-in-html-forms
遗憾的是,现代浏览器不提供对HTTP PUT请求的本机支持.要解决此限制,请确保HTML表单的方法属性为"post",然后将方法覆盖参数添加到HTML表单中,如下所示:
要测试您的请求,您可以使用"Postman"Google Chrome扩展程序