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

陈学虎 2019 年 05 月 23 日21:52:23 537字阅读1分47秒
摘要

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

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

表单中的input

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

AJAX提交

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

响应

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

 

首先,当没有CSRF表单时候,是这样的,会报400错误:

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

 

然增加CSRF表单内容后

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

能正常响应,返回200状态,成功。

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

  • 免费优惠券
  • 免费领取优惠券
  • weinxin
  • 品质与测试
  • 关注品质与测试
  • weinxin
  • 版权声明:本文为原创文章,转载请附上原文出处链接及本声明。
  • 转载请注明:Yii2 Ajax 表单 serialize 操作,如何解决CSRF问题 | https://chenxuehu.com/article/2019/05/7433.html