Yii的表单提交

提交表单报400错误,提示 “您提交的数据无法验证”原来是csrf验证的问题,因为表单是自己写的,在Yii框架中,为了防止csrf攻击,对post的表单数据封装了CSRF令牌验证

提交表单报400错误,提示 “您提交的数据无法验证”
原来是csrf验证的问题,因为表单是自己写的,在Yii框架中,为了防止csrf攻击,对post的表单数据封装了CSRF令牌验证。


    解决办法关闭csrf验证:


   方法一、在配资文件web.php中修改数组

         'request' => [
        
            'cookieValidationKey' => '123456',     //cookie的验证不能为空
            'enableCsrfValidation' => false,      //yii框架设有防csrf攻击,false后就可表单post提交
        ],


  使用Yii表单生成页面的时候,如果表单的提交方式为POST,GET,是都会在页面中添加一个隐藏字段,这个隐藏字段就是CSRF令牌验证字段
  用户在提交表单的同时,将该字段提交给服务器端,Yii框架会将该有客户端提交过来的隐藏字段和客户端提交过来的Cookie中的 YII_CSRF_TOKEN值进行比较。
相同则通过继续执行,不相同则会抛出400异常:”The CSRF token could not be verified.”。
所以就出现了上面的问题,如果是自己写的表单,可以在视图页面的表单添加隐藏的令牌验证字段


   方法二、在表单中增加隐藏的验证字段 


  a.表单post提交    <input name= "_csrf"  type= "hidden"  value= "<?= Yii::$app->request->csrfToken ?>" >   
  

  b.表单get提交    <input type="hidden" name="r" value="控制器名/方法名"> 

      



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值