Ошибка добавления заголовков Corse при использовании Django в IIS
У меня есть приложение django, которое размещено в IIS (с пользовательским URL), а его front-end размещен в Angular. Фронт-энд показывает ошибку, связанную с corse, поэтому я попытался решить эту проблему, добавив 'corseheaders' в settings.py моего кода бэкэнда. После этого, когда я попытался получить доступ к API (нажав на URL, размещенный в IIS), в браузере появилась следующая ошибка
Error occurred while reading WSGI handler:
Traceback (most recent call last):
File "D:\TESTAPP\API\venv\Lib\site-packages\wfastcgi.py", line 791, in main
env, handler = read_wsgi_handler(response.physical_path)
Ниже приведены изменения, которые я сделал в settings.py моего бэкенда (django). На самом деле я добавил последнюю строку с "corsheaders". если ее удалить, то ошибка исчезает.
ALLOWED_HOSTS = ['*']
CORS_ORIGIN_ALLOW_ALL = True
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'survey_app.apps.SurveyAppConfig'
"corsheaders",
]
Можете ли вы, ребята, пожалуйста, помочь мне.
Фронтенд показывает ошибки, связанные с corse, из-за того, что ваш фронтенд не находится на том же домене, что и ваш Django API/бэкенд, поэтому все ответы Django должны содержать заголовки, связанные с CORS. Эта статья посвящена кросс-оригинальному обмену ресурсами (CORS).
О том, как использовать django-cors-headers для решения междоменных проблем, вы можете узнать из следующих шагов:
1.Установите пакет с помощью pip:
pip install django-cors-headers
2.Добавить "corseheaders" в settings.py:
INSTALLED_APPS = (
……
'corsheaders',
……
)
3.Добавить промежуточное ПО:
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
4.Добавьте следующую конфигурацию в settings.py:
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
'*'
)
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)
CORS_ALLOW_HEADERS = (
'XMLHttpRequest',
'X_FILENAME',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
'Pragma',
)
Для более детальной настройки, пожалуйста, обратитесь к официальной документации.