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