我遇到了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是相同的。我错过了什么?
非常感谢提前! 丹尼尔
答案 0 :(得分: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
方法或元标记中,我不明白为什么会有所不同?