Ошибка при запросе reactjs с сервера Django (403 ошибка / CORS)
У меня есть проект reactjs, который делает запросы через API к django-rest-framework. Раньше он работал нормально, но я не уверен, почему он перестал работать.
Я уже использую django-cors-headers.
Мой settings.py:
INSTALLED_APPS = [
...
'rest_framework',
"corsheaders",
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
CORS_ALLOW_ALL_ORIGINS = True
Мой reactjs запрос:
fetch('/api/user/', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(obj)
})
Ошибка, которую я получил в терминале django:
Forbidden: /api/user/
[06/Oct/2021 01:15:31] "POST /api/user/ HTTP/1.1" 403 58
Ошибка в консоли и сетевых вкладках в браузере reactjs:
// console error:
UserPage.js:65 POST http://localhost:3000/api/user/ 403 (Forbidden)
//network error:
Referrer Policy: strict-origin-when-cross-origin
Чтобы решить вашу проблему, вы можете использовать CORS_ORIGIN_WHITELIST
вместо CORS_ALLOW_ALL_ORIGINS
в файле настроек Django.
ЗАМЕНИТЬ :
CORS_ALLOW_ALL_ORIGINS = True
BY :
CORS_ORIGIN_WHITELIST = (
'http://localhost:3000', # React default port = 3000
'http://localhost:8000', # Django default port = 8000
)
# Change the url to suit your needs.
NB : Определение CORS_ALLOW_ALL_ORIGINS
в True
должно разрешать все происхождения, но я уже сталкивался с этой проблемой и замена на CORS_ORIGIN_WHITELIST
решила ее. Тогда попробуйте это.