yii2 表单提交一直报错 或者页面脚本写ajax,用firbug调试总是找不到地址页面404

时间:2021-10-08 05:35:22

在Yii框架中,为了防止csrf攻击,封装了CSRF令牌验证,使用Yii表单生成页面的时候,如果表单的提交方式为POST,是都会在页面中添加一个隐藏字段:

<div style="display:none">
    <input type="hidden" value="a429b6c0f4468db23a5661d1682db537fe2672c7" name="YII_CSRF_TOKEN" />
</div>

表单提交解决1:

在你的控制器的构造方法里写这个

public function init(){

$this->enableCsrfValidation = false;

}

(不知道init方法什么意思的,参考yii2自动加载)

表单提交解决2:

在表单里面加:

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

ajax解决1:

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

$.ajax({

type: 'POST',

url: url,

data: {_csrf:csrfToken},

success: success,

dataType: dataType

});