我已经在我的控制器中启用了csrf验证为真。但是几分钟后,在提交表单时,csrf令牌已过期并收到错误的请求消息,尽管我通过ajax传递csrf令牌。请给我一个解决方案来获取在这个问题上。
以下是我的示例代码
控制器
public function beforeAction($action)
{
$this->enableCsrfValidation = true;
return parent::beforeAction($action);
}
JS页面
var csrfToken = $('meta[name="csrf-token"]').attr("content");
Ajax调用
var values = {
'id' : id,
'cpcode' : cpcode,
'_csrf' : csrfToken
};
$.ajax({
type : 'POST', //Method type
url : baseurl +'/site/test',
data : values,
dataType : 'json',
success : function(data)
{
}
}
);
main.php
<head> <?= Html::csrfMetaTags() ?></head>
答案 0 :(得分:0)
不应该是:
var values = {
'id': id,
'cpcode': cpcode,
yii.getCsrfParam(): yii.getCsrfToken()
};
答案 1 :(得分:0)
尝试添加标头,如下所示:
$.ajax({
...
headers: {'X-CSRF-Token':"U05vc3J6YmVmPgAaFh8gAiMvPBQTETMrBjc8JRA4GywBBwMGAzA7Og=="},
...
}