Yii2 Ajax 表单 serialize 操作,如何解决CSRF问题

老虎说测试 脚本开发字数 537阅读1分47秒阅读模式
摘要当使用ajax的serialize来提交数据,如何解决CSRF问题呢,关闭CSRF当然是不可以选择的,刚开始还一直在纠结思路,后面突然想了下,直接在form中来个hidden的in...

当使用ajax的serialize来提交数据,如何解决CSRF问题呢,关闭CSRF当然是不可以选择的,刚开始还一直在纠结思路,后面突然想了下,直接在form中来个hidden的input不就解决了吗?

表单中的input文章源自陈学虎-https://chenxuehu.com/article/2019/05/7433.html

<input type="hidden" name="<?= \Yii::$app->request->csrfParam; ?>" value="<?= \Yii::$app->request->getCsrfToken();?>">

AJAX提交文章源自陈学虎-https://chenxuehu.com/article/2019/05/7433.html

$("#cl").click(function(){
            $.ajax({
                url :'/site/test',
                type : 'POST',
                data : $("#ff").serialize(),
            });
        });

响应文章源自陈学虎-https://chenxuehu.com/article/2019/05/7433.html

public function actionTest()
    {
        var_dump(Yii::$app->request->post());
    }

 文章源自陈学虎-https://chenxuehu.com/article/2019/05/7433.html

首先,当没有CSRF表单时候,是这样的,会报400错误:文章源自陈学虎-https://chenxuehu.com/article/2019/05/7433.html

Yii2 Ajax 表单  serialize  操作,如何解决CSRF问题-图片1文章源自陈学虎-https://chenxuehu.com/article/2019/05/7433.html

 文章源自陈学虎-https://chenxuehu.com/article/2019/05/7433.html

然增加CSRF表单内容后文章源自陈学虎-https://chenxuehu.com/article/2019/05/7433.html

Yii2 Ajax 表单  serialize  操作,如何解决CSRF问题-图片2文章源自陈学虎-https://chenxuehu.com/article/2019/05/7433.html

能正常响应,返回200状态,成功。文章源自陈学虎-https://chenxuehu.com/article/2019/05/7433.html

很多时候,容易陷入思维的陷阱中,一直在寻找怎么将这个数据传递过去,也就实在ajax的data中处理,结果总是没找到合适的办法,加个表单解决了,也许还有更好的方法,有待于后续发现。

 
  • 版权声明:本文为原创文章,转载请附上原文出处链接及本声明。
  • 转载请注明:Yii2 Ajax 表单 serialize 操作,如何解决CSRF问题 | https://chenxuehu.com/article/2019/05/7433.html