解决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
});
该博客介绍了在使用Yii2框架时遇到AJAX提交报错400(BadRequest)的问题,主要是由于CSRF(跨站请求伪造)防护机制导致的。提供了三种解决方案:1) 在控制器中关闭CSRF验证;2) 在表单中添加CSRFTOKEN隐藏域;3) 在AJAX请求中添加_CSRF字段。确保在进行AJAX提交时,正确传递CSRF令牌以避免错误。

被折叠的 条评论
为什么被折叠?



