在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
});