yii2使用gii生成的搜索視圖里的表單使用的是get方式,我改為post就提示無法驗證,以為是控制器默認訪問是get,實際默認是get和post都可以
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
];
}
之所以提示無法驗證是因為對於post請求,是有一個CSRF驗證的
解決POST數據時因啟用Csrf出現的400錯誤
第一種解決辦法是關閉Csrf
public function init()
{
$this->enableCsrfValidation = false;
}
//或者
public function __construct($id, $module, $config = [])
{
$this->menuActive = 2;
$this->enableCsrfValidation = false;
parent::__construct($id, $module, $config);
}
//總之把enableCsrfValidation設為false就可以了
第二種解決辦法是在form表單中加入隱藏域
<input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>">
第三種解決辦法是在AJAX中加入_csrf字段
var csrfToken = $('meta[name="csrf-token"]').attr("content");
$.ajax({
type: 'POST',
url: url,
data: {
_csrf:csrfToken},
success: success,
dataType: dataType
});
