我对使用ajax提交的表单有疑问。我用Zend Framework做我的表单。有些是真实的形式,所以我添加了一个Hash元素。其他的是小型操作(如upvote和downvote),所以我用链接来做。
我的问题是我需要使用ajax特别是小表单(链接)。我看到很多问题,但没有足够的全面解决问题。有关如何通过ajax提交表单时如何使csrf令牌顺利运行的详细说明?最好使用Zend Framework,但一般的PHP答案也会有所帮助。
答案 0 :(得分:7)
您不需要CSRF
令牌。您的案例使用HTTP_X_REQUESTED_WITH
方法(请参阅例如here)。
答案 1 :(得分:0)
对于那些访问此页面的人来说,可以让csrf使用ajax。
在控制器中,您需要使用通过在操作结束前添加此权限来重新生成哈希:
$形式 - >散列> initCsrfToken();
$ this-> view-> csrfhash = $ form-> hash-> getValue();
在用于执行ajax的js文件中,您将需要使用选择器来查找创建哈希的实例(因此对于jquery:
$(#散列).replaceWith(csrfhash); 实际上,如果你使用replaceWith,你将替换整个隐藏的csrf元素,包括id和name。但这部分应该相当容易。