【发布时间】:2015-10-15 20:00:09
【问题描述】:
我有一个 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
但是,如果我在浏览器中单击后退按钮并再次重新提交具有相同值的表单,则可以成功提交。
我一直在google和stackoverflow上搜索,很多人说问题出在CSRF Token上。但在我的布局中,我输入了<?= Html::csrfMetaTags() ?>,而在我的表单中,则是<input type="hidden" name="_csrf" value="...">
这里有人可以帮我解决这个问题吗?并解释为什么会这样?
【问题讨论】:
-
你上传文件了吗?
-
No.. 只有文本区域,输入文本,选择 dan 复选框。
-
csrf 是时间相关的,你能检查你的时钟(服务器和浏览器)吗?
-
@IvanButtinoni 我不这么认为,在 Yii2 csrf 令牌中只是基于会话或 cookie。它不关心时间。在这种情况下,我们应该: 1. 检查您是否真的提交了 csrf 令牌。 2. Cookie 或会话工作正常吗?
-
@IvanButtinoni 在我的浏览器中的时间与在我的服务器中的时间相同。
标签: php yii2 bad-request