Ошибка CORS при публикации данных в моем DRF API из шаблона внутри самого проекта - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть Django проект, конечная точка которого создана с использованием DRF. Я публикую данные к нему из шаблона в самом проекте (другое представление). Однако я получаю следующий код ошибки:

403 Unauthorized. CSRF token not provided.

Это не имеет смысла, потому что и конечная точка, и представление имеют одинаковое происхождение. Так почему я получаю эту ошибку? И как я могу решить эту проблему? Спасибо за любую помощь.

1 Ответ

1 голос
/ 18 февраля 2020

Вам просто нужно сделать то, что он говорит: предоставить токен 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
      }
              ...
}
...