0
function facebookAuth() {
    $.ajax({
        url: 'index.php?r=account/fbauthorize',
        type: 'GET'
    });
}

这是我编写的一个简单函数,只是为了调用控制器中的函数,GET 类型可以正常工作,但 POST 不能。给我这个错误“错误请求(#400):无法验证您的数据提交。”

这与 yii2 中的 CSRF 验证有关,但我无法解决。

4

3 回答 3

4

有两个重要步骤:

1)注册你的js文件如下:

$this->registerJsFile(Yii::$app->homeUrl . 'js/test.js', [JqueryAsset::className()]);

2)在ajax请求中,您需要发布以下值以及数据:

yii.getCsrfParam(): yii.getCsrfToken()

CSRF 是一种安全功能,可以在控制器中禁用,但不推荐使用。

于 2014-05-16T05:36:09.960 回答
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",
});


享受 :)

于 2014-05-15T13:17:16.127 回答
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

于 2015-03-24T06:40:29.473 回答