Я не могу решить проблему с CORS в моем Django API. Когда я звоню этому API, я получаю сообщение об ошибке:
Доступ к выборке в 'http://localhost:8000/' от источника
'http://localhost' заблокирован политикой CORS: Ответ на
предварительный запрос не проходит проверку контроля доступа: нет
Заголовок «Access-Control-Allow-Origin» присутствует в запрошенном
ресурс. Если непрозрачный ответ удовлетворяет вашим потребностям, установите запрос
режим 'no-cors' для извлечения ресурса с отключенным CORS.
Чтобы включить CORS, я сделал pip install 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',
'corsheaders',
]
MIDDLEWARE_CLASSES = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ORIGIN_WHITELIST = [
'localhost:80',
'localhost:8000',
'127.0.0.1:8000'
]
Я должен сказать, что я запускаю свой проект на Docker. Это docker-compose.yml
:
version: '2'
services:
django-docker:
build:
context: .
dockerfile: Dockerfile.django
container_name: my.django
image: my-django
ports:
- 8000:8000
webapp-docker:
build:
context: .
dockerfile: Dockerfile.webapp
container_name: my.webapp
image: my-web
ports:
- 80:80