zoukankan      html  css  js  c++  java
  • Yii2提交表单提示无法验证

    yii2使用gii生成的搜索视图里的表单使用的是get方式,我改为post就提示无法验证,以为是控制器默认访问是get,实际默认是get和post都可以

    public function behaviors()
        {
            return [
                'verbs' => [
                    'class' => VerbFilter::className(),
                    'actions' => [
                        'delete' => ['post'],
                    ],
                ],
            ];
        }
    

      

    之所以提示无法验证是因为对于post请求,是有一个CSRF验证的

    解决POST数据时因启用Csrf出现的400错误

    第一种解决办法是关闭Csrf

    public function init()
    {
        $this->enableCsrfValidation = false;
    }
    //或者
    public function __construct($id, $module, $config = [])
    {
        $this->menuActive = 2;
        $this->enableCsrfValidation = false;
        parent::__construct($id, $module, $config);      
             
    }
    //总之把enableCsrfValidation设为false就可以了
    

      第二种解决办法是在form表单中加入隐藏域

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

      第三种解决办法是在AJAX中加入_csrf字段

    var csrfToken = $('meta[name="csrf-token"]').attr("content");
    $.ajax({
        type: 'POST',
        url: url,
        data: {
            _csrf:csrfToken},
            success: success,
            dataType: dataType
    });
    

      

  • 相关阅读:
    css盒子模型、垂直外边距合并
    mov指令和 add以及sub 指令的区别
    第一章 基础知识
    字符串文档的去重
    python 之 字符串的常用方法
    python格式化输出之format用法
    python 格式化输出之%号
    c++11可变参数模板的使用1
    深入浅出 c++11 std::async
    std::thread 概述
  • 原文地址:https://www.cnblogs.com/sandea/p/5636260.html
Copyright © 2011-2022 走看看