Django CORS CSRF_TRUSTED_ORIGINS не работает
Я работаю над DRF (Django проект), где мой бэкенд django rest api размещен на сервере и мой ReactJS фронтенд также размещен на том же сервере. Я убедился, что выполнил все необходимые шаги, как я прочитал в документации ff:
- https://github.com/adamchainz/django-cors-headers
- http://www.srikanthtechnologies.com/blog/python/enable_cors_for_django.aspx .
Я добавил corsheaders INSTALLED_APPS и мое промежуточное ПО в settings.py имеет следующий вид:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
А мои настройки CORS в settings.py таковы:
CORS_ALLOW_ALL_ORIGINS=False
CSRF_TRUSTED_ORIGINS = [
"https://samplefrontend.tech",
]
CORS_ALLOW_METHODS = [
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
]
CORS_ALLOW_HEADERS = [
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
]
Однако, когда я пытаюсь выполнить некоторые запросы с помощью Postman с моего локального компьютера (не с сервера frontend), например, get token, rest api возвращает токены refresh и access. То же самое происходит и с другими HTTP-запросами, я могу свободно выполнять эти запросы с помощью Postman и получать ответ.
Мне нужно, чтобы принимались только запросы, приходящие от фронтенд-приложения (reactjs). Может ли кто-нибудь помочь мне в этом?
В документации сказано, что промежуточное ПО cors должно быть в самом начале списка.
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
---
all other middleware
]
У меня настройки cors такие -
CORS_ORIGIN_WHITELIST = [
"http://localhost:3000",
"http://localhost:5000",
"http://192.168.3.27:3000"
]
и это работает нормально.