我尝试使用异步http请求传递CSRF令牌。
Yii2服务器响应:
错误请求(#400)无法验证您的数据提交。
角度请求:
$http.post(
/web/api/search',
{
'_csrf': yii.getCsrfToken(),
'data': $scope.data
}
).success(function(response) {
console.log("Hello, World!");
});
还启用了CSRF元标记:<?= Html::csrfMetaTags() ?>
。
有什么问题?
答案 0 :(得分:3)
在Angular中尝试此初始化代码。此代码正确运行CSRF验证:
var moduleName = 'app';
var app = angular.module(moduleName, []);
app.run( function run($http){
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
$http.defaults.headers.post['X-CSRF-Token'] = $('meta[name="csrf-token"]').attr("content");
});