解决yii2 ajax post提交报错 Bad Request (#400)---Unable to verify your data submission方案

原因分析

是因为yii2.0的防csrf问题,没有csrftoken是提交不成功的

第一种解决办法是关闭Csrf

控制器里面关闭

public $enableCsrfValidation = false;

或者

public function init(){
    
    
     $this->enableCsrfValidation = false;
}

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

可以自己加个csrftoken隐藏域,和其他数据一起传到控制器中。

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

将name为_csrf的值传过去 这里是重点,我刚开始传的是name=_csrf ,如果不成功,接着找原因,原来,这儿的token名一定要和你框架中配置文件中定义的那个参数名一致。 main.php配置文件

在这里插入图片描述

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

var csrfToken = $('meta[name="csrf-token"]').attr("content");

$.ajax({

type: 'POST',

url: url,

data: {_csrf:csrfToken},

success: success,

dataType: dataType

});

猜你喜欢

转载自blog.csdn.net/guo_qiangqiang/article/details/112977744