无法解释无效的 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 令牌