删除请求应该是POST(或DELETE)。但我们无法使用<a>
标记创建POST / DELETE。
是否真的有必要在一个巨大的<form>
中包含一个删除按钮,并在页面上为~30个不同的项目提供隐藏的CSRF令牌,或者有更好的方法来解决这个问题吗?
答案 0 :(得分:1)
您可以使用POST
发送XmlHttpRequest
请求,在纯JavaScript中执行此操作,如下所述:Send POST data using XMLHttpRequest
答案 1 :(得分:1)
没有JS的解决方案:
使用PHP创建一个能够处理删除并重定向的着陆页 - 这样,您就不必担心用户界面,甚至可以从标准锚标签中获取GET请求。用户流看起来比在成功时进行AJAX +刷新更自然。
您甚至可以使用现有页面(让我们称之为page.php
),例如:
page.php?action=delete&token=123&ids=1-2-3-4-5
page.php
(因此,网址再次显示不错,用户点击刷新按钮即可安全使用)答案 2 :(得分:0)
根据我从评论中收集到的内容,基本上有3种方法:
<form>
中换行每个删除按钮
<form>
元素的中间页面。这也可以作为确认页面。
全页面重新加载(2.2)的AJAX解决方案听起来似乎对我产生的影响最小。