Django API - CORS-ошибка при входе в систему (обход Django REST Framework и corsheaders)

Я новичок в Django и создании веб-интерфейса без Django REST Framework.

Моя установка:

  1. Angular для фронтенда (скомпилировано для производства)

  2. Django бэкенд с функцией входа/регистрации пользователей в качестве первого шага

  3. Использовали команду collectstatic для включения скомпилированных активов Angular

  4. Выполнена настройка в urls.py, указывающая на index.html Angular для основного URL

-----------------------urls.py-------------------

from django.contrib import admin
from django.urls import include, path
from django.views.generic import TemplateView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/auth', include('user_auth.urls')),
    path('', TemplateView.as_view(template_name='index.html')),
    path('<path:path>', TemplateView.as_view(template_name='index.html')),
]


-----------------------settings.py-------------------

STATIC_URL = 'static/'
STATICFILES_DIRS = [BASE_DIR / 'frontend/dist/frontend/browser']
STATIC_ROOT = BASE_DIR / 'static'

CORS_ALLOWED_ORIGINS = [
    "http://localhost:4200",  # Angular dev server
    "http://127.0.0.1:4200",
    "http://localhost:8000",  # Django server
    "http://127.0.0.1:8000",
]

CORS_ORIGIN_WHITELIST = (
  'http://localhost:8000', 'http://127.0.0.1:8000'
)
CORS_ALLOW_ALL_ORIGINS = True

CORS_ALLOW_HEADERS = [
    'content-type',
    'X-CSRFToken',
    'authorization',
    'Access-Control-Allow-Origin',
    'Access-Control-Allow-Headers'
]

Выпуск:

Я сталкиваюсь с ошибкой CORS при выполнении запроса на вход в систему по адресу http://127.0.0.1:8000/api/auth/login.

Попытки:

Я попробовал использовать пакет corsheaders для решения проблемы с CORS и проблема CORS была решена, но затем столкнулся с проблемой CSRF-токена при выполнении post-запроса к http://127.0.0.1:8000/api/auth/login.. Как я понимаю, используя декоратор csrf_exempt, я могу решить эту проблему,

Вопрос:

  1. Целесообразен ли и правилен ли мой подход к созданию пользовательского API без внешних пакетов?

Спасибо!

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