我在发布到拥有CSRF的api路线时遇到问题(400获取错误请求)。
我有CSRF注册到所有路线。
var postData = {
csrf_name : $('.wrapper').attr('guardName'),
csrf_value : $('.wrapper').attr('guardValue') ,
id : 31
};
console.log( postData );
$.ajax({
url: domain + "/api/notify",
method: 'POST',
credentials: 'include',
data: postData,
headers: {
'Content-Type': 'application/json, application/x-www-form-urlencoded; charset=utf-8',
},
success: function(data, textStatus, jqXHR)
{
console.log(data);
},
error: function (jqXHR, textStatus, errorThrown)
{
console.log('Update notify failed!');
}
});
我的路线
$app->group('/api/', function () use ($container) {
$this->post('notify', function ($request, $response, $args) use ($container) {
#..
})->setName('notifyUpdate');
});
答案 0 :(得分:0)
这是我的解决方案
// White list paths from CSRF
$path = $container['request']->getUri()->getPath();
$csrf_whitelist_paths = [
"/api/notify"
];
if (!in_array($path, $csrf_whitelist_paths)) {
$app->add($container->csrf);
}