function facebookAuth() {
$.ajax({
url: 'index.php?r=account/fbauthorize',
type: 'GET'
});
}
这是我编写的一个简单函数,只是为了调用控制器中的函数,GET 类型可以正常工作,但 POST 不能。给我这个错误“错误请求(#400):无法验证您的数据提交。”
这与 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