Для управления Cross-Origin Resource Sharing (CORS) в Django, можно использовать пакет `django-cors-headers`, который позволяет добавить подходящие заголовки ответа HTTP для управления разрешенными источниками.
Первым делом установите `django-cors-headers`:
```sh
pip install django-cors-headers
```
После установки добавьте `'corsheaders'` в `INSTALLED_APPS` в вашем `settings.py`:
```python
INSTALLED_APPS = [
...
'corsheaders',
...
]
```
Затем добавьте `CorsMiddleware` в `MIDDLEWARE`:
```python
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]
```
Теперь настройте `CORS_ALLOWED_ORIGINS` в `settings.py`. По умолчанию, `django-cors-headers` не поддерживает шаблоны поддоменов напрямую в `CORS_ALLOWED_ORIGINS`. Однако, можно использовать регулярные выражения в `CORS_ALLOWED_ORIGIN_REGEXES`.
Пример настройки для разрешения всех поддоменов `.example.com`:
```python
CORS_ALLOWED_ORIGIN_REGEXES = [
r"^https?://(\w+\.)?example\.com$",
]
```
Эта регулярная выражение позволяет доступ для всех поддоменов `example.com`, включая домен `example.com` сам по себе. Однако, под "разрешение всех поддоменов" принято понимать n-уровневые поддомены, то есть также `sub.sub.example.com`, `sub2.sub.example.com` и т.д. Если вам нужно разрешить все n-уровневые поддомены, вам стоит модифицировать регулярное выражение следующим образом:
```python
CORS_ALLOWED_ORIGIN_REGEXES = [
r"^https?://([a-zA-Z0-9-]+\.)*example\.com$",
]
```
Это регулярное выражение позволяет запросы через HTTP и HTTPS со всех поддоменов `example.com`, включая n-уровневые поддомены.
Если вы хотите разрешить только запросы через HTTPS, то просто удалите `http?` из регулярного выражения:
```python
CORS_ALLOWED_ORIGIN_REGEXES = [
r"^https://([a-zA-Z0-9-]+\.)*example\.com$",
]
```
Пожалуйста, убедитесь, что регулярные выражения соответствуют вашим нуждам в безопасности, так как слишком широкие правила могут нести риски безопасности.