2016-02-06 2 views
0

Я пишу приложение с AngularJS на интерфейсе и Django как услугу REST на бэкэнд. Я пытаюсь отправить некоторые данные JSON, используя запрос POST, но столкнувшись с проблемой csrf-токена (токен CSRF отсутствует или неверный). Насколько я знаю, ранее я должен был сделать запрос GET на Django, чтобы получить этот токен. Так что я написал простой вид:Django не устанавливает токен CSRF на AJAX GET из angularJS

def get_csrf_token(request): 
    return HttpResponse(json.dumps({'success': True})) 

Я добавил httpProvider по умолчанию, и на старте углового приложения делает запрос GET по мнению:

angular.module('app') 
    .config(function($httpProvider){ 
     $httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
     $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 
    }) 
    .run(function($http){ 
     $http.get("http://127.0.0.1:8888/get_csrf_token/") 
    }) 

, но эта точка зрения DonT установить маркер CSRF, и я все еще не может выполнить запрос POST.

ответ

0

Если ваше представление не отображает шаблон, содержащий тег шаблона csrf_token, Django может не установить cookie-маркер CSRF. Это часто встречается в тех случаях, когда формы динамически добавляются на страницу. Чтобы рассмотреть этот случай, Django предоставляет декодер вида, который заставляет настройку файла cookie: ensure_csrf_cookie().

+0

Большое спасибо! Оформитель помог мне – parikLS