CSRF-токен из POST некорректен при запуске 2 контейнеров Django на одном хосте Docker
Я запускаю два проекта Django на хосте Docker с Compose, и оба проекта взаимодействуют друг с другом через сеть Docker под названием mynetwork
.
Все работает нормально, однако, когда я вхожу в раздел администратора проекта A, а затем открываю новую вкладку для входа в раздел администратора проекта B, то пользователь из проекта A отключается с таким сообщением:
CSRF verification failed. Request aborted.
Reason given for failure:
CSRF token from POST incorrect.
И наоборот, когда я вхожу в административный раздел проекта B и загружаю вкладку с административным разделом проекта A, пользователь проекта B отключается.
В обоих проектах используются пользовательские AUTH_USER_MODEL
.
Я попытался деактивировать CsrfViewMiddleware
middleware и поиграть с параметрами ниже, но не заметил никаких изменений. Как я могу решить эту проблему?
settings.py
Проект A & B
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
"corsheaders.middleware.CorsMiddleware",
'whitenoise.middleware.WhiteNoiseMiddleware',
'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',
'django_structlog.middlewares.RequestMiddleware',
'django_structlog.middlewares.CeleryMiddleware',
]
AUTH_USER_MODEL = 'authentication.User'
CSRF_TRUSTED_ORIGINS = [
'http://controller-django-1:8001/',
'http://bookkeeper-django-1:8002/',
'http://localhost:8001/',
'http://127.0.0.1:8001/',
]
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'http')
# CSRF_USE_SESSIONS = True
# CSRF_COOKIE_HTTPONLY = True
docker-compose.yml
Проект А
version: '3.8'
services:
django:
build:
context: .
dockerfile: ./compose/local/django/Dockerfile
image: controller_django
command: python manage.py runserver 0.0.0.0:8001
volumes:
- .:/app
expose:
- 8001
ports:
- 8001:8001
- 25060:25060
env_file:
- controller/.env
networks:
- mynetwork
networks:
mynetwork:
name: mynetwork
Проект B
version: '3.8'
services:
django:
build:
context: .
dockerfile: ./compose/local/django/Dockerfile
image: bookkeeper_django
command: python manage.py runserver 0.0.0.0:8002
volumes:
- .:/app
expose:
- 8002
ports:
- 8002:8002
- 25061:25061
env_file:
- bookkeeper/.env
networks:
- mynetwork
networks:
mynetwork:
name: mynetwork