我的 Rails 应用程序中有一个 React 组件,我正在尝试使用它fetch()
发送一个POST对于我在本地主机上托管的 Rails 应用程序,这给了我错误:
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
我正在使用 devise gem 来处理user/registrations
and logins
.
我已尝试删除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 视图中嵌入一个 React 组件,那么最简单的方法是从 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,因此不太确定确切的语法,但这应该有助于指导您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)