#django #django-admin #csrf #django-csrf #ssh-tunnel
#django #django-admin #csrf #django-csrf #ssh-туннель
Вопрос:
Я пытаюсь войти в панель администратора приложения Django через другой сервер (скажем 123.123.123.123
). У меня открыт ssh-туннель ssh -L 3000:my.website.com:443 user@123.123.123.123
. Затем я могу перейти https://localhost:3000/admin/login/
и просмотреть страницу входа в систему для администратора Django запущенного сервера my.website.com
. Какие бы учетные данные я ни вводил, это приводит к сбою проверки CSRF HTTP 403. Запрос прерван.страница ошибок.
Я не получаю эту ошибку при переходе непосредственно к my.website.com/admin/login/
. Какие настройки могут помочь разрешить вход в систему через SSH-туннель? Я уже пытался добавить 'localhost'
в ALLOWED_HOSTS
. Файлы cookie CSRF безопасны (доступны только через HTTPS, который я всегда использую) и имеют установленный флаг HttpOnly.
Ответ №1:
Django увидит, что вы пытаетесь получить доступ my.website.com
к домену, и отправит вам cookie для этого домена.
Но ваш браузер фактически обращается localhost
к домену, поэтому файлы cookie для my.website.com
него недействительны, и браузер не будет отправлять их обратно на сервер Django.
Один из способов исправить это — указать my.website.com
на использование 127.0.0.1 /etc/hosts
, изменить порт туннеля на 443 и подключиться my.website.com
вместо этого.
Другой подход заключается в установке любого сервера между вами и вашим сервером django, который будет переписывать файлы cookie и другие пути из одного домена в другой.
Комментарии:
1. Я добавил
127.0.0.1 my.website.com
в/etc/hosts/
. Сработало отлично!