在 React 应用程序中使用 axios.post 到 Django 端点时出现 403 错误代码

Posted

技术标签:

【中文标题】在 React 应用程序中使用 axios.post 到 Django 端点时出现 403 错误代码【英文标题】:403 error code when using axios.post to Django endpoint in React app 【发布时间】:2017-08-23 17:01:30 【问题描述】:

当我尝试从我的 react 应用程序中向 django 视图发出简单的发布请求时,我收到了 403。这是我的代码:

views.py

@csrf_protect
def test_view():
    if (request.method == 'POST'):
        return HttpResponse(request.body)

Login.js(反应组件)

import Cookies from 'js-cookie';

//React constructor 

  test_view() 
      const csrftoken = Cookies.get('csrftoken');
      const config = 
        headers: 'HTTP_X_CSRFTOKEN': csrftoken,
      
      axios.post('/prototype/hello/', firstName: 'Fred', config)
        .then(res => console.log("Test res: " + res.data));
  
//

urls.py

    url(r'^hello', views.test_view, name='test-view'),

'js-cookie' 库是否可能不起作用?我在任何地方都没有 % csrf_token % 因为我没有使用 index.html 以外的 django 模板。相反,我有 @csrf_protect 装饰器。根据docs,我认为这是我应该做的。

【问题讨论】:

如果您没有禁用 csrfmiddleware,则不必使用 csrf_protect。您是否确认 cookie 确实获得了 csrf_token ? 【参考方案1】:

只需设置以下设置。不需要其他任何东西。

axios.defaults.xsrfCookieName = 'csrftoken';
axios.defaults.xsrfHeaderName = 'X-CSRFToken';

【讨论】:

以上是关于在 React 应用程序中使用 axios.post 到 Django 端点时出现 403 错误代码的主要内容,如果未能解决你的问题,请参考以下文章

Node.js——异步上传文件

无法在 React Native 应用程序中使用 React.memo

使用通过 react、redux 和 react-redux 完成的组件以及在 react 应用程序中使用 webpack 构建时出错

在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?

在 WordPress 插件中使用“创建 React 应用程序”

在使用 create-react-app 的 React 应用程序中填充 ES6 功能的最佳方法