CSRF不匹配令牌
问题描述:
我在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
答
对我来说,解决方案是制作一个元标记并用它来填充我的ajaxSetup
方法。
<meta name="csrf-token" content="{{csrf_token_value}}">
$.ajaxSetup({
headers: {
'x-csrf-token': $('meta[name="csrf-token"]').attr('content')
}
});
现在也令牌在我的头和发送cookie是不同的(也许是一个在cookie被KeystoneJS加密?)。
我不明白为什么如果我直接在我的ajaxSetup
方法或元标记中放置令牌会有什么影响?
如果有人能解释给我,我会很高兴。它肯定会提供这个答案,因为只有'如何'被强化,而不是'为什么'。