2016-04-27 13:49:43 0 评论 Yii 2.0 Boy.Lee

Yii2.0 报错 "Unable to verify your data submission"

在Yii 2.0框架开发中, 使用POST方式提交数据会得到错误

Bad Request (#400)
Unable to verify your data submission.

 

通过分析发现是在表单中缺少了csrf部分数值,  Yii 2.0 默认打开 csrf校验, 所以可以在form区域找到如下隐藏内容

<input type="hidden" name="_csrf" value="LmZwR0lqU2RbMy8pcEcmV2lRJgA9IRwTSSkScDg7YzEDLAkWBSM8Vg==">

 

那么修复的办法也变得非常简单, 只需要在你的form区域添加如下内容即可

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

 

值得说明的是 Yii::$app->request->csrfToken 会直接生成用于校验的csrfToken

 

{ 其他做法 }

1.关闭指定action csrf校验 - 不推荐, 仅限特殊情况下使用

在指定action里添加如下内容, 取消csrf校验

Yii::$app->controller->enableCsrfValidation = false;

 

2. 关闭指定controller下全部action的csrf校验, 对所有action 生效 - 不推荐, 仅限特殊情况下使用

在controller里添加如下内容

public $enableCsrfValidation = false;

 

{ Lee Say }

请尽量保持 Yii 2.0框架的csrf校验开启状态, 对整个程序都是有益的.