Django API - CORS-ошибка при входе в систему (обход Django REST Framework и corsheaders)
Я новичок в Django и создании веб-интерфейса без Django REST Framework.
Моя установка:
Angular для фронтенда (скомпилировано для производства)
Django бэкенд с функцией входа/регистрации пользователей в качестве первого шага
Использовали команду
collectstatic
для включения скомпилированных активов AngularВыполнена настройка в 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, я могу решить эту проблему,
Вопрос:
- Целесообразен ли и правилен ли мой подход к созданию пользовательского API без внешних пакетов?
Спасибо!