Django поставляется с промежуточным программным обеспечением защиты CSRF, которое генерирует уникальный токен для каждого сеанса для использования в формах. Он сканирует все входящие запросы POST
на правильный токен и отклоняет запрос, если токен отсутствует или недействителен.
Я бы хотел использовать AJAX для некоторых POST-запросов, но у упомянутых запросов нет доступного токена CSRF. Страницы не имеют элементов <form>
, и я не хочу мутить разметку, вставляя токен в скрытое значение. Я считаю, что хороший способ сделать это - выставить vew как /get-csrf-token/
, чтобы вернуть токен пользователя, опираясь на правила межсайтового скриптинга браузера, чтобы предотвратить нежелательные сайты от его запроса.
Это хорошая идея? Существуют ли более эффективные способы защиты от атак CSRF при одновременном разрешении AJAX-запросов?