我有一个由Gii生成的控制器。我将行为修改为:
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
],
];
}
当我填写表格并提交时,有时我会收到错误
Bad Request (#400) Unable to verify your data submission
但是,如果我点击浏览器中的后退按钮并再次重新提交具有相同值的表单,则可以成功提交。
我一直在搜索谷歌和stackoverflow,其中许多人说问题出在CSRF令牌上。但是在我的布局中,我放了<?= Html::csrfMetaTags() ?>
,在我的表单中有<input type="hidden" name="_csrf" value="...">
这里有人可以帮我解决这个问题吗?并解释为什么会发生这种情况?
答案 0 :(得分:4)
在视图中添加表单
<input type="hidden" name="_csrf" value="<?=Yii::$app->request->getCsrfToken()?>" />
答案 1 :(得分:-3)
我遇到了同样的问题,最终禁用了csrf验证。
public function actionCreate() {
Yii::$app->controller->enableCsrfValidation = false;
}
这似乎是为我做的。