无法验证CSRF令牌的真实性Rails/Reaction [英] Can't verify CSRF token authenticity Rails/React

查看:16
本文介绍了无法验证CSRF令牌的真实性Rails/Reaction的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的Rails应用程序中有一个Reaction组件,我试图使用fetch()帖子发送到托管在本地主机上的Rails应用程序,这会给我带来错误:

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):

我正在使用Devise GEM处理user/registrationslogins

我已尝试删除protect_from_forgery with: :exception

这是我获取的代码,

this.state.ids.sub_id});
  fetch(POST_PATH, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: body  
  }).then(res => res.json()).then(console.log);

如何获取CSRF令牌并通过表单将其发送以使其通过?
理想情况下,我只希望通过标头发送它,但我不知道如何访问令牌。

推荐答案

如果您只是在Rails视图中嵌入Reaction组件,则最简单的方法是从Rails视图中检索CSRF令牌,然后将其作为标头传递到Fetch API调用中。

您可以通过执行以下操作来获取CSRF令牌:

const csrf = document.querySelector("meta[name='csrf-token']").getAttribute("content");
然后您只需在FETCH调用中将其作为标头传递: ... headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': csrf }, ...

我通常不使用FETCH,所以不太确定确切的语法,但这应该有助于指导您。

这篇关于无法验证CSRF令牌的真实性Rails/Reaction的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆