Ошибка при запросе 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 решила ее. Тогда попробуйте это.

Вернуться на верх