CSRF 不匹配的令牌
CSRF Mismatched Token
我遇到 KeystoneJS 中 csrf 令牌不匹配的问题。
我在我的路线文件中使用这个:
keystone.pre('routes', keystone.security.csrf.middleware.validate);
keystone.pre('routes', keystone.security.csrf.middleware.init);
在我的客户端代码中,我设置了 x-csrf-token header 和 jQuery:
$.ajaxSetup({ headers: { 'x-csrf-token' : '{{csrf_token_value}}' } });
现在我向路由文件中定义的路由发送 post 请求。我请求中的 csrf token header 和我的 cookie 是一样的。我错过了什么?
非常感谢!
丹尼尔
我的解决方案是制作一个元标记并用它来填充我的 ajaxSetup
方法。
<meta name="csrf-token" content="{{csrf_token_value}}">
$.ajaxSetup({
headers: {
'x-csrf-token': $('meta[name="csrf-token"]').attr('content')
}
});
现在我的头和 cookie 中发送的令牌也不同(也许 cookie 中的令牌是用 KeystoneJS 加密的?)。
我不明白如果我将令牌直接放在我的 ajaxSetup
方法或元标记中为什么会有所不同?
如果有人能向我解释一下,我会很高兴。它肯定会改进这个答案,因为只有 'how' 是 adresed 而不是 'why'.
我遇到 KeystoneJS 中 csrf 令牌不匹配的问题。 我在我的路线文件中使用这个:
keystone.pre('routes', keystone.security.csrf.middleware.validate);
keystone.pre('routes', keystone.security.csrf.middleware.init);
在我的客户端代码中,我设置了 x-csrf-token header 和 jQuery:
$.ajaxSetup({ headers: { 'x-csrf-token' : '{{csrf_token_value}}' } });
现在我向路由文件中定义的路由发送 post 请求。我请求中的 csrf token header 和我的 cookie 是一样的。我错过了什么?
非常感谢! 丹尼尔
我的解决方案是制作一个元标记并用它来填充我的 ajaxSetup
方法。
<meta name="csrf-token" content="{{csrf_token_value}}">
$.ajaxSetup({
headers: {
'x-csrf-token': $('meta[name="csrf-token"]').attr('content')
}
});
现在我的头和 cookie 中发送的令牌也不同(也许 cookie 中的令牌是用 KeystoneJS 加密的?)。
我不明白如果我将令牌直接放在我的 ajaxSetup
方法或元标记中为什么会有所不同?
如果有人能向我解释一下,我会很高兴。它肯定会改进这个答案,因为只有 'how' 是 adresed 而不是 'why'.