Javascript React本机获取请求在没有CSRF令牌的情况下失败

Javascript React本机获取请求在没有CSRF令牌的情况下失败,javascript,ruby-on-rails,react-native,fetch,csrf,Javascript,Ruby On Rails,React Native,Fetch,Csrf,我一直在为用Rails构建的web应用程序开发一个移动补充程序。使用FetchAPI,我不断收到通知“无法验证CSRF令牌的真实性” 编辑:设法让它工作,但我还是不明白为什么。如果有人有同样的问题,我就是这样解决的。我设法从rails应用程序中获取表单\u authenticity\u令牌,并将其保存为变量,然后将其传递给函数。尚未测试删除凭据密钥 export const login = (user, token) => { return fetch('http://localhos

我一直在为用Rails构建的web应用程序开发一个移动补充程序。使用FetchAPI,我不断收到通知“无法验证CSRF令牌的真实性”

编辑:设法让它工作,但我还是不明白为什么。如果有人有同样的问题,我就是这样解决的。我设法从rails应用程序中获取表单\u authenticity\u令牌,并将其保存为变量,然后将其传递给函数。尚未测试删除凭据密钥

export const login = (user, token) => {
  return fetch('http://localhost:3000/api/session', {
    method: 'POST',
    credentials: 'include',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ user, authenticity_token: token })
  })

您需要在头中添加CSRF令牌,或者在跨域请求时禁用/删除CSRF

export const login = (user) => {
  fetch('http://localhost:3000/api/session', {
    method: 'POST',
    credentials: 'include',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
      'X-CSRF-TOKEN': token
    },
    body: JSON.stringify({user})
  })
  // promise handling
}

使用Django后端时,应设置:

'X-CSRFToken': csrf_token  // not 'X-CSRF-Token' !!!
在JS请求头中

环境: 要在后端端设置令牌,请使用:

{% csrf_token %}  <!-- put this in your html template -->

感谢您的回答,但不幸的是没有解决问题。您从哪里获得令牌?这里是另一个您可以遵循的脚本您是否必须在会话控制器中进行任何更改才能使其正常工作?我有一个类似的问题,但这个修复不适合我。
{% csrf_token %}  <!-- put this in your html template -->
const csrf_token = document.getElementsByName('csrfmiddlewaretoken')[0].value;