2016-05-31 107 views
0

我在KeystoneJS中存在csrf令牌不匹配的问题。 我在航线使用本文件:CSRF不匹配令牌

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

在我的客户端代码,我设置使用jQuery一个X-CSRF令牌头:

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

现在我发个帖子请求路由定义在我的路线文件中。我的请求头和我的cookie中的csrf标记是相同的。我错过了什么?

非常感谢提前! Daniel

回答

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方法或元标记中放置令牌会有什么影响?

如果有人能解释给我,我会很高兴。它肯定会提供这个答案,因为只有'如何'被强化,而不是'为什么'。