Проверка CSRF не удалась. Прерванный запрос с JWT-токеном в Django RestAPI

В настоящее время я сталкиваюсь с ошибкой 403 Forbidden из-за отказа проверки CSRF при выполнении POST-запроса к конечной точке API моего приложения Django, даже при использовании JWT-токена для аутентификации. Я попытался отключить CSRF-защиту для API, сохранив ее для панели администратора с помощью пользовательского промежуточного ПО, но ошибка сохраняется. Ниже приведена соответствующая конфигурация в моих settings.py и views.py.

Я пытался отключить проверку CSRF для конечных точек API с помощью пользовательского промежуточного ПО, а также декораторов @method_decorator(csrf_exempt) и @csrf_exempt, но требование CSRF все равно, похоже, выполняется. Вот обзор шагов, которые я предпринял:

settings.py:

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    "django.middleware.common.CommonMiddleware",
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "spBE.middlewares.disable_csrf.DisableCSRFOnAPI",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
]
ALLOWED_HOSTS = ['*']
CSRF_TRUSTED_ORIGINS = ['http://localhost:1337','http://localhost:8000','http://10.126.2.27:8000','http://10.126.2.27:1337']
CORS_ALLOW_ALL_ORIGINS = True  
CORS_ALLOW_CREDENTIALS = True

urls.py:

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from rest_framework.permissions import AllowAny
from rest_framework_simplejwt.authentication import JWTAuthentication

schema_view = get_schema_view(
    openapi.Info(
        title="Domocek API",
        default_version='v1.1',
        description="Breakpoints",
        terms_of_service="https://app.slack.com/client/T04RV3CLJ2W/C06KV8FSY3X",
        contact=openapi.Contact(email="nikita@gmail.com"),
        license=openapi.License(name="License"),
    ),
    public=True,
    permission_classes=(AllowAny,),
    authentication_classes=(JWTAuthentication,),
    url='http://10.126.2.27:1337/',
)


urlpatterns = [
    path("admin/", admin.site.urls),
    path('api/', include('api.urls')),
    path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

часть views.py

class ProjectCreatView(APIView):
    permission_classes = [IsAuthenticated]
    def post(self, request, *args, **kwargs):
        serializer = ProjectSerializer(data=request.data, context={'request': request})
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

enter image description here

Вернуться на верх