Автор Тема: Выполнение AJAX-запроса: ошибка csrf  (Прочитано 1332 раз)

AdminUser

  • Team Lead
  • Юный джедай
  • *****
  • Сообщений: 65
  • Репутация +8/-0
    • Просмотр профиля
Выполнение AJAX-запроса: ошибка csrf
« : Марта 16, 2019, 02:00:58 pm »
Всем привет!

Пытаюсь отправить AJAX-запрос, но натыкаюсь на

Цитата:
    CSRF token missing or incorrect.

Отправляю так:

var data = 'id=0';

POST_AJAX(data);

function getCookie(name) {
var 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;
}
var csrftoken = getCookie('csrftoken');

data = 'csrftoken=' + csrftoken + '&' + data;

var xhr = new XMLHttpRequest();

xhr.open("POST", '{% url 'to_friend' %}', true);

xhr.setRequestHeader('Content-Type', ENCTYPE);

xhr.onreadystatechange = function() {
alert( xhr.status + ': ' + xhr.statusText );
}

xhr.send(data);



И принимаю так:

def ToFriend(request):

    if request.method == "POST":
        user_id = request.POST.get("id",'')
        user = Profile.objects.get(id=user_id)
        print user
        return HttpResponse("ok!--=")

Как ее можно пофиксить? csrftoken получаю такой:

qk6dON8sSYRQRGdBm5KPlEnyy9BUQnIjRS0s0Nr1VcYBsW0gupowhQ282OtQV2oN

AdminUser

  • Team Lead
  • Юный джедай
  • *****
  • Сообщений: 65
  • Репутация +8/-0
    • Просмотр профиля
Re: Выполнение AJAX-запроса: ошибка csrf
« Ответ #1 : Марта 16, 2019, 02:04:18 pm »
И еще я заметил, что мой токен, полученный из куки не совпадает с генерируемым через {% csrf_token %}

DigitalMag

  • Юный джедай
  • **
  • Сообщений: 89
  • Репутация +6/-0
    • Просмотр профиля
Re: Выполнение AJAX-запроса: ошибка csrf
« Ответ #2 : Марта 16, 2019, 02:06:57 pm »
Попробуйте вместо csrftoken передать csrfmiddlewaretoken:

data = 'csrfmiddlewaretoken=' + csrftoken + '&' + data;
« Последнее редактирование: Марта 16, 2019, 02:09:52 pm от AdminUser »

AdminUser

  • Team Lead
  • Юный джедай
  • *****
  • Сообщений: 65
  • Репутация +8/-0
    • Просмотр профиля
Re: Выполнение AJAX-запроса: ошибка csrf
« Ответ #3 : Марта 16, 2019, 02:10:07 pm »
Спасибо! То, что надо!