Моя текущая настройка — AngularJS + Django 1.5, и я полностью отказался от использования механизма шаблонов Django (т.е. бэкэнд — это в значительной степени сервер API).
Поскольку я не использую тег шаблона csrf_token
, Django, в свою очередь, не устанавливает и не отправляет в ответ cookie csrftoken
. Как указано в официальной документации, декоратор ensure_csrf_cookie()
следует использовать, чтобы заставить декорированное представление отправлять файл cookie csrftoken
.
Я применил декоратор ensure_csrf_cookie()
к представлению, которое обслуживает первый запрос GET, который мой веб-клиент вызывает при начальной загрузке. При этом мой веб-клиент получает токен CSRF и впредь может вызывать небезопасные методы (например, POST) на сервер.
Приведенная выше настройка работает нормально, только если токен CSRF остается неизменным до завершения сеанса просмотра.
Вопрос. Обновляется ли токен Django CSRF во время сеанса просмотра? Если «да», означает ли это, что мне нужно применить декоратор ensure_csrf_cookie()
ко всем представлениям, которые у меня есть?
ensure_csrf_cookie()
, и используйте его в качестве основы для вашего API-представления (вероятно, вы также можете переместить туда много стандартного кода). - person Paulo Scardine   schedule 04.12.2013RequestContext
. Мой сервер API обслуживает только JSON, что объясняет, почему мне приходится вручную принудительно включать файл cookie. - person tamakisquare   schedule 06.12.2013