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 –