我正在使用 Play 2.0 构建应用程序。
由于 Play 表单生成器不会生成本机 http“Delete”请求方法,因此应将其替换为“Get”或“Post”。
@form(routes.Application.delete(id), 'class -> "topRight") {
<input type="submit" value="Delete this computer" class="btn danger">
}
根据 Play 示例,“发布”应用于“删除”目的。尽管使用“获取”很舒服,因为可以用简单的链接替换表单(特别是在单个页面上列出这些链接)
那么有什么理由使用POST来模拟DELETE呢?
使用理由POST
用于模仿DELETE
代替 GET
是因为 HTTP 规范认为某些 HTTP 动词(又名方法)是安全的。这些方法是HEAD, GET, OPTIONS and TRACE http://www.w3.org/Protocols/rfc2616/rfc2616.html。这意味着在使用这些 HTTP 方法发出请求时,应用程序状态不应产生任何副作用。日志记录、缓存或计数器增量通常不被视为应用程序状态修改,除非它是应用程序域的一部分。
使用理由POST
用于仿真DELETE
请求而不是直接使用DELETE
在网络表单中是因为许多浏览器不支持DELETE
直接地。许多使用帮助程序生成表单标记的 Web 框架(例如 Play 和 Rails)都使用您提到的技巧将请求映射到代码中相应的 REST-ish 操作。看浏览器中的 HTTP 方法支持 http://annevankesteren.nl/2007/10/http-method-support了解更多信息。另请参阅这个问题 https://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-most-web-browsers有关此主题的更多信息。根据W3C最新的HTML5候选推荐,HTML5 FORM元素不支持以下值method除 GET 或 POST 之外的属性 http://www.w3.org/TR/html5/forms.html#attr-fs-method。对于FORMHTML 4.01 中的元素 http://www.w3.org/TR/html401/interact/forms.html#edef-FORM.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)