«сбой токена rest_framework CSRF», но он уже установлен в заголовке запроса как «X-CSRF-Token»

#django #django-rest-framework #django-csrf

#django #django-rest-framework #django-csrf

Вопрос:

Уже проверил другие темы и попробовал ответы, но проблема остается по-прежнему. Мои запросы put / post возвращаются с ошибкой.

подробно: «Сбой CSRF: токен CSRF отсутствует или неверен».

Хотя я отправляю CSRFToken внутри заголовка axios.defaults.headers.common['X-CSRF-Token'] = CSRF_TOKEN;

И вот он CSRF

введите описание изображения здесь

Кстати, в settings.py Я устанавливаю классы аутентификации

 'DEFAULT_AUTHENTICATION_CLASSES': [
    'rest_framework.authentication.TokenAuthentication',
    'rest_framework.authentication.SessionAuthentication',

],
 

Дополнительно views.py

 class ProjectViewSet(viewsets.ViewSet):

  permission_classes = [IsAuthenticated | IsSuperUser]

  # retrieve works without a problem
  def retrieve(self, request, pk=None):
    queryset = Project.objects.all().filter(company_user=self.request.user)
    project = get_object_or_404(queryset, pk=pk)
    serializer = ProjectSerializer(project)
    return Response(serializer.data)

  def update(self, request, pk=None):
    # CSRF request problem
    pass

  def partial_update(self, request, pk=None):
    # CSRF request problem
    pass
 

и urls.py

 router = DefaultRouter()
router.register('project', views.ProjectViewSet, basename='project')

urlpatterns = router.urls
 

Я что-то здесь упускаю? Почему у меня продолжает появляться ошибка CSRF?

Ответ №1:

Вы должны использовать X-CSRFToken вместо X-CSRF-Token

Комментарии:

1. это сработало! Спасибо. примет это как ответ