Django 在DRF api上使用axios响应请求时抛出错误禁止(未设置CSRF cookie。)

Django 在DRF api上使用axios响应请求时抛出错误禁止(未设置CSRF cookie。),django,reactjs,axios,csrf,Django,Reactjs,Axios,Csrf,这是我的代码: export function loginUser({ email, password }, history) { return (dispatch) => { axios({ url: URL_LOGIN_BASE, method: "POST", headers: { "Content-Type": "application/json", "Access-Control-Allow-Orig

这是我的代码:

export function loginUser({ email, password }, history) {
  return (dispatch) => {
    axios({
      url: URL_LOGIN_BASE,
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Access-Control-Allow-Origin": "*"
      },
      // withCredentials: true,
      data: { "email": email, "password": password }
    }).then(response => {
      dispatch(setAuthentification(true));
      history.push("/dashboard");
      console.log(response);
    }).catch(err => {
      console.log(err);
    });
  };
}
这里是我的服务器配置(settings.py):

因此我有后端错误:禁止(未设置CSRF cookie):/


请注意,这个问题非常流行,但所有尝试的解决方案都不能解决我的问题。。。救命啊

您需要在请求头中添加
csrf
令牌

export function loginUser({ email, password }, history) {
      return (dispatch) => {
      axios({
        url: URL_LOGIN_BASE,
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          "Access-Control-Allow-Origin": "*",
          "X-CSRFToken" : "TOKEN FROM YOUR COOKIES" 
        },
        // withCredentials: true,
        data: { "email": email, "password": password }
      }).then(response => {
        dispatch(setAuthentification(true));
        history.push("/dashboard");
        console.log(response);
     }).catch(err => {
      console.log(err);
    });
//下面的函数从cookies返回csrftoken

  export const getCsrfToken = () => {
      const csrf = document.cookie.match('(^|;)\\s*csrftoken\\s*=\\s*([^;]+)');
      return csrf ? csrf.pop() : '';
    };

请在问题中添加您的错误文本,不要添加图像,因为它可能在将来不可用,并且文本更易于参考。您提到所有尝试的解决方案都无法解决您的问题,您是否也可以将您已经尝试过的解决方案添加到您的问题中?通过这种方式,您可以为您的问题获得更好的答案,否则您将获得您可能已经尝试过的解决方案。我使用了“withCredentials=true”、凭据:“include”并添加axios.defaults.xsrfHeaderName=“X-CSRFToken”;axios.defaults.xsrfCookieName=“csrftoken”;下面介绍axios导入,但没有解决问题错误是:禁止(未设置CSRF cookie):/[11/Oct/2018 18:37:23]“POST/HTTP/1.1”403 2868谢谢,但它仍然不适用于我!我设置为:axios.defaults.xsrfHeaderName=“X-CSRFToken”;axios.defaults.xsrfCookieName=“csrftoken”;但在我的项目中使用csrf时,始终使用相同的后端响应。我只是简单地在标题中传递它。。axios.defaults.xsrfCookiaName.中没有任何内容。。查看我的更新答案,从cookiesOoops获取csrftoken!断然的。。。URL不正确。正确设置后,工作正常!!!
  export const getCsrfToken = () => {
      const csrf = document.cookie.match('(^|;)\\s*csrftoken\\s*=\\s*([^;]+)');
      return csrf ? csrf.pop() : '';
    };