• 提交表单报400错误,提示 “您提交的数据无法验证”


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

    frontend/config/main-local.php中

    方法一、在配置文件中关闭

    'components'=>array(
            'request'=>array(
                // Enable Yii Validate CSRF Token
                'enableCsrfValidation' => true,
            ),
    ),
    

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

    <input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>">

    如果不想csrf验证就将方法一的true修改为false,这样YII就不会做post表单验证处理。

  • 相关阅读:
    su和sudo命令详解
    JS线程Web worker
    Navicat 批处理 自动备份数据库
    MySql【Error笔记】
    vue入门
    动态库
    环境变量
    cmake_learn
    自动编译
    网络编程
  • 原文地址:https://www.cnblogs.com/wepe/p/7424602.html
Copyright © 2020-2023  润新知