Как разрешить доступ к API только от фронтеда(React), находящегося с бэкендом на одном домене с помощью Django Cors на продакшене?
Мне необходимо сделать так, чтобы все хотя бы POST запросы к API были доступны только с сайта на React. Как правильно настроить cors? Или какую технологию и как использовать?
Django Rest работает с помощью gunicorn + nginx,при указание в url /api/ nginx проводит прокси с gunicorn:
location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/run/gunicorn.sock;
proxy_redirect default;
}
настройки Django сейчас имеет такие:
DEBUG = False
ALLOWED_HOSTS = [
'домен'
]
CORS_ALLOWED_ORIGINS = [
"https://домен",
"http://домен",
]
CSRF_TRUSTED_ORIGINS = [
"http://домен",
]
Ответы (1 шт):
Автор решения: Pinkierar
→ Ссылка
Не проверял, но должно помочь следующее:
- Обфусцировать и разбросать на клиенте свой генератор JWT
- Провести через него данные о браузере, которые передаются в заголовках со всеми запросами
- Использовать, как временный (до одной минуты) анонимный токен доступа, используя для валидации на сервере такой же генератор
- Регулярно обновлять этот генератор