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

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

原因分析

是因为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

});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值