Как подключить React к Django?

#python #reactjs #django #django-cors-headers

#python #reactjs #django #django-cors-заголовки

Вопрос:

Я использую ReactJS в качестве интерфейса, а Django — в качестве серверной части. Когда я делаю запрос от react к Django (react выполняется в http://127.0.0.1:3000 то время как Django выполняется в http://127.0.0.1:8000 ),

 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://127.0.0.1:8000/api/categories. (Reason: CORS header 'Access-Control-Allow-Origin' missing).
 

Скорее всего, это происходит из-за проблемы CORS. Итак, я установил django-cors-headers и внес следующие изменения в свой settings.py :-

 INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_cleanup.apps.CleanupConfig',
    'myapp',
    'corsheaders'
]
MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ALLOWED_ORIGINS = [
    "http://127.0.0.1:3000"
]
 

Но ошибка все еще сохраняется. Как я могу заставить это работать?

Комментарии:

1. Вы пробовали это ?

2. Вы определенно используете http://127.0.0.1:3000 , а не для примера http://localhost:3000 . Хотя они указывают на одно и то же, если вы используете более поздний вариант, это то, что вы должны перечислить в CORS_ALLOWED_ORIGINS

3. @tim-mccurrach я использую http://127.0.0.1:3000

4. @AbdulNiyasPM Я попробовал прокси, и он тоже работает, но он хорош только для разработки. Мне нужно решить проблему CORS при создании

5. @GaganSingh Вы также проверили вывод django на терминал? Если возникает ошибка еще до того, как запрос достигнет промежуточного программного обеспечения cors, вы также получите ошибку cors в консоли браузера. Это долгий путь, но просто мысль.

Ответ №1:

Какую версию вы используете? Попробуйте заменить

 CORS_ALLOWED_ORIGINS = [
    "http://127.0.0.1:3000"
]
 

Для:

 CORS_ORIGIN_WHITELIST = [
    "http://localhost:3000",
    "http://127.0.0.1:3000"
]
 

или:

 CORS_ORIGIN_ALLOW_ALL = True