从项目本身的模板向我的 DRF API 发布数据时出现 CORS 错误

CORS error when posting data to my DRF API from a template within the project itself

我有一个 Django 项目,它有一个使用 DRF 创建的端点。我正在从项目本身(另一个渲染视图)中的模板向其发布数据。但是,我收到以下错误代码:

403 Unauthorized. CSRF token not provided.

这没有意义,因为端点和视图共享相同的原点。那么为什么我会收到此错误?我该如何解决这个问题?感谢您的帮助。

您只需按说明操作即可:提供 csrf 令牌。 使用此函数从 cookie 中获取它:

export function getCookie(name){
  let cookieValue = null;
  if (document.cookie && document.cookie !== '') {
      var cookies = document.cookie.split(';');
      for (var i = 0; i < cookies.length; i++) {
          var cookie = cookies[i].trim();
          if (cookie.substring(0, name.length + 1) === (name + '=')) {
              cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
              break;
          }
      }
  }
  return cookieValue;
}

然后像这样修改您的 ajax 函数:

const csrf_token = this.getCookie('csrftoken')
const postData = async() => {
              ... 
      headers: {
          'Content-Type': 'application/json',
          'x-csrftoken': csrf_token
      }
              ...
}