【问题标题】:CSRF check in Slim using Ajax postCSRF 使用 Ajax post 签入 Slim
【发布时间】:2019-01-30 17:05:01
【问题描述】:

在使用 Ajax 发布请求时,我一直在努力让我的 CSRF 工作。 我确实有多个使用相同 CSRF 令牌的请求。但问题是它已经在第一个被执行时失败了。 (加载页面时只有 1 个触发器)

代码的简要概述:

Ajax 调用:

var settings = {
                "async": true,
                "crossDomain": true,
                "url": "http://localhost:3000/locations",
                "method": "POST",
                "headers": {
                    "{{ nameKey }}": "{{ name }}",
                    "{{ valueKey }}": "{{ value }}",
                    "Cache-Control": "no-cache"
                }
            }

            $.ajax(settings).done(function (Data) {

中间件:

$container['csrf'] = function ($c) {
    $csrf = new \Slim\Csrf\Guard;
    $csrf->setPersistentTokenMode(true);
    return $csrf;
};
$app->add($container->get('csrf'));

我一直在寻找如何解决这个问题。几乎在我看到的所有地方,他们都告诉将令牌持久模式设置为 true,这将解决问题。然而,当我尝试这个时,我得到了同样的错误,我尝试了多种方法,比如在请求之前重新生成令牌,但此时似乎没有任何效果。

如果有人能帮我解决这个问题,我会很高兴。

【问题讨论】:

    标签: php jquery ajax csrf slim


    【解决方案1】:

    我发现将 CSRF 值发布为标题不起作用。 (邮递员在填写数据时给了我这个想法) 相反,我不得不去创建一个表单并像这样附加 CSRF

                        let form = new FormData();
                        form.append("csrf_name", csrfName);
                        form.append("csrf_value", csrfValue);
                        var settings = {
                          "async": true,
                          "crossDomain": true,
                          "url": "http://localhost:3000/update,
                          "method": "POST",
                          "headers": {
                            "Cache-Control": "no-cache"
                          },
                          "processData": false,
                          "contentType": false,
                          "mimeType": "multipart/form-data",
                          "data": form
                        };
    

    这对我有用。

    【讨论】:

    • 这个答案没有帮助,尝试添加解释答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 2015-05-22
    • 2013-12-18
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多