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

  • A+
所属分类:脚本开发
摘要

当使用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

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

关闭震动

目前评论:1   其中:访客  1   博主  0

    • avatar 头条 1

      文章不错非常喜欢,支持一下吧