尝试删除帖子的时候Yii的错误400的CSRF令牌无法被验证(Yii Error 400 The C

2019-07-30 01:42发布

当我试图删除后,我得到这个错误:

Yii Error 400 The CSRF token could not be verified

我不知道究竟是什么导致这和它可能有关。 这里是我的行动删除:

    public function actionDelete($id) {

         if (Yii::app()->request->isPostRequest) {
                // we only allow deletion via POST request
                $this->loadModel($id)->delete();

                // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
                if (!isset($_GET['ajax']))
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
        }
        else
              throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    protected function afterDelete()
    {
        parent::afterDelete();
        Image::model()->deleteAll('name='.$this->id);
        Date::model()->deleteAll('tbl_show_id='.$this->id);
        Press::model()->deleteAll('tbl_show_id='.$this->id);
    }

Answer 1:

看来你已经启用了CSRF验证 。 如果你想使用它,阅读文档,并确保你在每一个POST请求发送CSRF令牌。



Answer 2:

我有同样的问题,但下面解决它。 希望能帮助到你。 我加

'params'=> array('YII_CSRF_TOKEN' => Yii::app()->request->csrfToken)

下面的代码:

<?php
    echo CHtml::linkButton('Delete',array(
        'submit'=>$this->createUrl('delete',array('id'=>$model->id)),
        'confirm'=>"Are you sure want to delete ".$item->product->name."from the shopping cart?",
        'params'=> array('YII_CSRF_TOKEN' => Yii::app()->request->csrfToken)));
?>

谢谢。



Answer 3:

CSRF将继续给你这个错误,因为你正在使用URL删除(GET)

为了使用CSRF验证,你应该使用产生CSRF令牌,并与每一个岗位提交一个有效的形式您的请求。

查找:Yii中的CForm



Answer 4:

即使你跟着Yii的CSRF文档正确的错误可能是由缓存系统引起的。 在我的情况下,服务器缓存的登录页面,然后用这样的登录表单返回核查假一遍又一遍担任同样的道理。



文章来源: Yii Error 400 The CSRF token could not be verified when trying to delete the post
标签: php yii