#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