【问题标题】:CSRF Mismatched TokenCSRF 不匹配令牌
【发布时间】:2019-05-28 23:38:37
【问题描述】:

我遇到了 KeystoneJS 中的 csrf 令牌不匹配的问题。 我在路由文件中使用它:

keystone.pre('routes', keystone.security.csrf.middleware.validate);
keystone.pre('routes', keystone.security.csrf.middleware.init);

在我的客户端代码中,我使用 jQuery 设置了一个 x-csrf-token 标头:

$.ajaxSetup({ headers: { 'x-csrf-token' :  '{{csrf_token_value}}' } });

现在我向我的路由文件中定义的路由发送一个发布请求。我的请求标头中的 csrf 令牌和我的 cookie 是相同的。我错过了什么?

提前非常感谢! 丹尼尔

【问题讨论】:

    标签: node.js csrf keystonejs


    【解决方案1】:

    我的解决方案是制作一个元标记并使用它来填充我的ajaxSetup 方法。

    <meta name="csrf-token" content="{{csrf_token_value}}">
    
    $.ajaxSetup({
        headers: {
            'x-csrf-token': $('meta[name="csrf-token"]').attr('content')
        }
    });
    

    现在我的标头和 cookie 中发送的令牌也是不同的(也许 cookie 中的那个是由 KeystoneJS 加密的?)。

    我不明白如果我将令牌直接放在我的 ajaxSetup 方法或元标记中会有什么不同?

    如果有人可以向我解释一下,我会很好。它肯定会改进这个答案,因为只有“如何”被解决,而不是“为什么”。

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 2016-12-10
      • 2016-09-20
      • 2017-09-01
      • 2020-01-20
      • 2020-06-17
      相关资源
      最近更新 更多