function facebookAuth() {
$.ajax({
url: 'index.php?r=account/fbauthorize',
type: 'GET'
});
}
这是一个简单的函数,我只是为了在控制器中调用函数,GET类型工作正常,但POST没有。给我这个错误"错误请求(#400):无法验证您的数据提交。"
它与yii2中的CSRF验证有关,但我无法解决它。
答案 0 :(得分:4)
有两个重要步骤:
1)按如下方式注册您的js文件:
$this->registerJsFile(Yii::$app->homeUrl . 'js/test.js', [JqueryAsset::className()]);
2)在ajax请求中,您需要将以下值与数据一起发布:
yii.getCsrfParam(): yii.getCsrfToken()
CSRF是一种安全功能,可以在控制器中禁用,但不建议这样做。
答案 1 :(得分:0)
将这两行添加到您的代码中
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",
});
<小时/> 享受:)
答案 2 :(得分:0)
确保设置正确的访问方法。
public function behaviors()
{
return [
'verbs' => [
'class' => \yii\filters\VerbFilter::className(),
'actions' => [
'fbauthorize' => ['post'],
],
],
];
}
http://www.yiiframework.com/doc-2.0/yii-filters-verbfilter.html