Django не устанавливает CSRF-токен на AJAX GET от angularJS
Я пишу приложение с AngularJS на внешнем интерфейсе и Django в качестве службы REST на внутреннем сервере. Я пытаюсь отправить некоторые данные JSON, используя запрос POST, но столкнулся с проблемой csrf-токена (токен CSRF отсутствует или неверен). Насколько я знаю, ранее я должен был сделать запрос GET на Django, чтобы получить этот токен. Итак, я написал простой вид:
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/")
})
но это представление не устанавливает токен CSRF, и я все еще не могу сделать запрос POST.
1 ответ
Если ваше представление не отображает шаблон, содержащий тег шаблона csrf_token, Django может не установить cookie-токен CSRF. Это часто встречается в тех случаях, когда формы динамически добавляются на страницу. Для решения этой проблемы Django предоставляет декоратор представления, который принудительно устанавливает настройку cookie: sure_csrf_cookie ().