2017-02-23 2 views
0

Я создаю мой запрос AJAX, как это:Джанго 1,10: CSRF Токен вопрос в Ajax

data.push({'csrfmiddlewaretoken': csrf, 'answers': answers}) 

     $.ajax(
      { 
       type: "POST", 
       url: "http://127.0.0.1:8000/en/list/add/", 
       data: JSON.stringify(data), 
       dataType: 'json' 
      }).done(function (data) { 
      console.log(data) 
     }); 

Но я все еще получаю ошибку CSRF маркер отсутствует или неверен.

+0

Вы сделали это https://docs.djangoproject.com/en/1.10/ref/csrf/#ajax? – inlanger

ответ

0

Django будет анализировать тело запроса только в том случае, если он закодирован как данные формы (либо как application/x-www-form-urlencoded, либо как multipart/form-data). Поскольку ваши данные являются строкой JSON, тело не анализируется, и Django не может найти токен csrf в request.POST.

Так что если вы используете JSON для кодирования тела запроса, вместо этого вам нужно использовать заголовок X-CsrfToken. Есть несколько примеров в .

Смежные вопросы