React Native 如何修复“CSRF令牌丢失”错误?

izkcnapc  于 2023-02-19  发布在  React
关注(0)|答案(1)|浏览(111)

我正在构建一个Web应用程序,Django作为后端框架,DjangoRestFramework作为webAPI,React Native作为前端,apisauce作为HTTP客户端。当我尝试从前端向后端发出POST请求时,我得到了这个错误:
CSRF失败:缺少CSRF令牌
当我使用postman时,我没有得到错误。
如果我把这个注解掉django.middleware.csrf.CsrfViewMiddleware好吗?

uelo1irk

uelo1irk1#

CSRF令牌用于防止跨站点请求伪造攻击。此错误意味着您没有在POST请求中提供CSRF。我想知道您为什么使用apisauce而不是axios,因为axios自动包含CSRF令牌。
意思是你不需要注解"django. middleware. csrf. csrfViewMiddleware"
并确保您的应用免受CSRF攻击。

    • 编辑:**

好的,如果你必须使用apisauce,你可以使用下面的代码手动设置csrf标记:

import apisauce from 'apisauce';

const api = apisauce.create({
  baseURL: 'https://yourbackend.com/api',
});

const csrftoken = getCookie('csrftoken');

api.setHeader('X-CSRFToken', csrftoken);

api.post('/endpoint', {
  data: 'yourdata',
})
.then((response) => {
  console.log(response);
})
.catch((error) => {
  console.log(error);
});

function getCookie(name) {
  // you may have to change this function a bit
  const value = `; ${document.cookie}`;
  const parts = value.split(`; ${name}=`);
  if (parts.length === 2) return parts.pop().split(';').shift();
}

相关问题