我可以在HTML表单中使用PUT方法将数据从表单发送到服务器吗?


当前回答

_method隐藏字段的解决方法

以下是一些web框架使用的简单技术:

添加一个隐藏的_method参数到任何不是GET或POST的表单: <input type="hidden" name="_method" value="PUT"> 这可以通过HTML创建助手方法在框架中自动完成。 将实际的表单方法固定为POST (<form method=" POST ") 进程_method在服务器上,并做的就像该方法已经发送而不是实际的POST

你可以通过以下方法实现:

Rails: form_tag 中@ method (Laravel:“补丁”)

为什么它在纯HTML中是不可能的原理/历史:https://softwareengineering.stackexchange.com/questions/114156/why-there-are-no-put-and-delete-methods-in-html-forms

其他回答

不幸的是,现代浏览器不提供对HTTP PUT请求的本机支持。为了解决这个限制,确保你的HTML表单的方法属性是“post”,然后添加一个方法覆盖参数到你的HTML表单,像这样:

<input type="hidden" name="_METHOD" value="PUT"/>

测试你的要求,你可以使用“邮差”谷歌chrome扩展

简单地说——不。

我尝试在HTML表单中触发一个put请求,但它将POST请求发送到服务器。要添加PUT请求-

我们可以通过监听脚本中的提交操作,然后将put请求发送到特定端点来实现这一点。

http-server环境的截图。测验

如果你正在使用nodejs,你可以安装包方法覆盖,让你使用一个中间件来做这件事。 文档链接:http://expressjs.com/en/resources/middleware/method-override.html

安装后,我所要做的就是:

var methodOverride = require('method-override')
app.use(methodOverride('_method'))

_method隐藏字段的解决方法

以下是一些web框架使用的简单技术:

添加一个隐藏的_method参数到任何不是GET或POST的表单: <input type="hidden" name="_method" value="PUT"> 这可以通过HTML创建助手方法在框架中自动完成。 将实际的表单方法固定为POST (<form method=" POST ") 进程_method在服务器上,并做的就像该方法已经发送而不是实际的POST

你可以通过以下方法实现:

Rails: form_tag 中@ method (Laravel:“补丁”)

为什么它在纯HTML中是不可能的原理/历史:https://softwareengineering.stackexchange.com/questions/114156/why-there-are-no-put-and-delete-methods-in-html-forms

我可以使用“放”方法在html形式发送数据从html形式到服务器?

是的,你可以,但请记住,它不会导致一个PUT请求,而是一个GET请求。如果为<form>标记的方法属性使用了无效值,浏览器将使用默认值get。

HTML表单(直到HTML版本4 (,5 Draft)和XHTML 1)只支持GET和POST作为HTTP请求方法。一种解决方法是使用隐藏的表单字段(由服务器读取并相应地分发请求)通过POST隧道其他方法。XHTML 2.0曾计划支持表单的GET、POST、PUT和DELETE,但它将进入HTML5的XHTML5,后者不计划支持PUT。(更新)

您也可以提供一个表单,但是不提交它,而是使用JavaScript的PUT方法创建并触发一个XMLHttpRequest。