Django CORS Headers
django-cors-headers решает проблемы с CORS при создании API для фронтенд приложений.
Установка
Настройка
1# settings.py
2INSTALLED_APPS = [
3 'corsheaders',
4]
5
6MIDDLEWARE = [
7 'corsheaders.middleware.CorsMiddleware',
8 'django.middleware.common.CommonMiddleware',
9]
10
11# Разрешить все источники (только для разработки!)
12CORS_ALLOW_ALL_ORIGINS = True
13
14# Для production указать конкретные домены
15CORS_ALLOWED_ORIGINS = [
16 "https://example.com",
17 "https://sub.example.com",
18 "http://localhost:3000",
19]
Дополнительные настройки
1# Разрешенные заголовки
2CORS_ALLOW_HEADERS = [
3 'authorization',
4 'content-type',
5 'x-csrftoken',
6]
7
8# Разрешенные методы
9CORS_ALLOW_METHODS = [
10 'DELETE',
11 'GET',
12 'OPTIONS',
13 'PATCH',
14 'POST',
15 'PUT',
16]
17
18# Разрешенные credentials
19CORS_ALLOW_CREDENTIALS = True
20
21# Время жизни preflight запросов
22CORS_PREFLIGHT_MAX_AGE = 86400
Настройка для production
FAQ
Q: Почему CORS не работает?
A: Убедись, что CorsMiddleware стоит перед CommonMiddleware.
Q: Как настроить для разных окружений?
A: Используй переменные окружения для разных настроек.