function facebookAuth() {
$.ajax({
url: 'index.php?r=account/fbauthorize',
type: 'GET'
});
}
這是一個簡單的函數,我寫的只是調用該函數在控制器中,GET類型工作正常,但文章沒有。給我這個錯誤「錯誤的請求(#400):無法驗證您的數據提交。」Ajax請求yii2控制器功能
這與yii2中的CSRF驗證有關,但我無法解決它。
function facebookAuth() {
$.ajax({
url: 'index.php?r=account/fbauthorize',
type: 'GET'
});
}
這是一個簡單的函數,我寫的只是調用該函數在控制器中,GET類型工作正常,但文章沒有。給我這個錯誤「錯誤的請求(#400):無法驗證您的數據提交。」Ajax請求yii2控制器功能
這與yii2中的CSRF驗證有關,但我無法解決它。
有兩個重要步驟:
1)註冊您的js文件如下:
$this->registerJsFile(Yii::$app->homeUrl . 'js/test.js', [JqueryAsset::className()]);
2)在Ajax請求您需要發佈以下與數據一起值:
yii.getCsrfParam(): yii.getCsrfToken()
CSRF是一種安全功能,可在控制器中禁用,但不推薦。
這兩行添加到您的代碼
contentType: "application/json; charset=utf-8",
dataType: "json",
這將是
$.ajax({
url: 'index.php?r=account/fbauthorize',
type: 'GET',
contentType: "application/json; charset=utf-8",
dataType: "json",
});
確保設置正確的訪問方法。
public function behaviors()
{
return [
'verbs' => [
'class' => \yii\filters\VerbFilter::className(),
'actions' => [
'fbauthorize' => ['post'],
],
],
];
}
http://www.yiiframework.com/doc-2.0/yii-filters-verbfilter.html
見http://stackoverflow.com/questions/18597894/yii-ajax-request-csrf-can-not-be-verified –