AJAX Post数据CSRF Slim

时间:2018-03-28 09:44:52

标签: ajax csrf slim csrf-protection

我在发布到拥有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');
});

1 个答案:

答案 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);
}