Есть десятки вопросов, которые по сути идентичны тем, которые я задаю. Однако ни один из их ответов, похоже, не работает для меня.
У меня есть React-интерфейс, где я использую axios
для отправки запросов на бэкэнд. Пример
const request = await axios.post('${BASE_URL}/logout/')
Большинство конечных точек Django Rest Framework создаются с помощью ViewSets. Тем не менее, у меня есть несколько, которые являются собственными и в основном сделаны для аутентификации.
path('createaccount/', views.create_account),
path('me/', views.current_user),
path('logout/', views.logout),
path('login/', views.login),
path('resetpassword', views.reset_password),
Для разработки этого проекта я включил @csrf_exempt
над этими представлениями, потому что я не хотел иметь с ним дело в то время. Сейчас я близок к развертыванию, и пришло время выяснить это.
В некоторых ответах говорится, что мне нужно получить токен CSRF от Django, который хранится в cookie-файлах, и мне нужно передать это в заголовке каждого запроса. В некоторых ответах говорится, что все, что мне нужно сделать, это настроить axios, например
axios.defaults.xsrfHeaderName = "X-CSRFTOKEN";
axios.defaults.xsrfCookieName = "XCSRF-TOKEN";
И это будет "просто работать". Я попытался настроить CSRF_COOKIE_NAME
для различных значений, чтобы это тоже заработало.
В некоторых ответах даже сказано сохранить @csrf_exempt
, но это звучит как очень, очень плохая идея.
Мне действительно нужно генерировать / получать файл cookie CSRF? Я включаю это с каждым запросом? Или это просто конфигурация axios?