403 Ошибки CSRF при попытке входа в Django Admin через SSH-туннель

#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/ . Сработало отлично!