无法解释无效的 CSRF 令牌 rails api

Posted

技术标签:

【中文标题】无法解释无效的 CSRF 令牌 rails api【英文标题】:Cannot explain invalid CSRF token rails api 【发布时间】:2021-07-23 04:39:10 【问题描述】:

我目前在我的项目中遇到了一个错误,这是一个带有 react/redux 前端的 rails api 后端。

使用 Rails 提供的 httponly cookie 和 csrf 令牌进行身份验证,并通过我的 api 包装器放置在我的请求的标头中。

我的应用程序有许多非获取请求,我没有遇到任何 CSRF 问题,但我在注销操作时遇到了奇怪的行为。

我的注销请求是一个删除请求,如果我登录,则立即注销该请求由于无效的 csrf 令牌而失败,我已确保我在登录后发出一个。

在我尝试调试此问题时,我仔细研究了 devtools 中的请求,并让服务器在创建时将每个 csrf 令牌记录到控制台,并且我让我的客户端在每个请求中记录令牌。我可以确认最后发出的 csrf 令牌与用于注销请求的令牌匹配,但它仍然无效。

让事情变得更奇怪:如果我刷新页面,注销请求会成功,尽管没有向后端发出新请求,并且使用与前一个请求中失败的相同的 csrf 令牌。

我感到不知所措,我不知道该怎么办我觉得我已经尝试了所有方法

【问题讨论】:

你能看到这个吗? github.com/rails/rails/issues/11476 【参考方案1】:

问题出在我的 api 包装器中,包装器没有正确设置 x-csrf 标头值,虽然我的浏览器有正确的 cookie,但标头被设置为未定义

【讨论】:

以上是关于无法解释无效的 CSRF 令牌 rails api的主要内容,如果未能解决你的问题,请参考以下文章

Rails 为重复的 JSON 请求自动更新 CSRF 令牌

无法验证 CSRF 令牌真实性 Rails 4.1

无法验证 CSRF 令牌的真实性 Rails/React

Rails 3:无法验证 CSRF 令牌的真实性

无法在 Rails + React App 中验证 CSRF 令牌

无法在 Rails 中验证 CSRF 令牌的真实性