Если вы проверили шаблоны для auth.login
, вы заметите, что токен CSRF явно включен в тег <form>
.
<form method="post" action=".">
{% csrf_token %}
Это расширяется в скрытое поле, когда страница отображается по запросу GET
.Что-то вроде:
<form method="post" action=".">
<div style='display:none'>
<input type='hidden' name='csrfmiddlewaretoken'
value='90064bf0e86edacfdb60595e3e2b8f23' />
</div>
Этот токен затем передается обратно в представление на POST
и проверяется.
Следовательно, прежде чем вы сможете POST
перейти к защищенному представлению CSRF, вы должны сначала получить токен из указанного представления.
Можете ли вы проверить / убедиться, что у вас есть токен CSRF, прежде чем отправлять запрос POST
в представление?Кроме того, вы можете отключить защиту CSRF для вида, используя декоратор csrf_exempt
.Это не может быть хорошей идеей, хотя.
Обновление
В этом и заключается мой вопрос: я не использую шаблоны django для своего интерфейса и, следовательно, не могу пометить формы токеном,Я использую GWT для своего внешнего интерфейса, который отображает форму для сообщения.
Вы уже делаете запрос GET
к представлению Django перед рендерингом страницы?В этом случае вы можете получить токен CSRF, проанализировав содержимое ответа.
Если нет, вам придется явно сделать запрос GET
к представлению (при условии, что он поддерживает GET
) и проанализироватьответ для токена CSRF.Пример см. в этом вопросе .