2016-10-11 3 views
0

Я пытаюсь войти в админ-панель приложения Django через другой сервер (скажем 123.123.123.123). У меня есть туннель ssh, открытый как ssh -L 3000:my.website.com:443 [email protected]. Затем я могу перейти на https://localhost:3000/admin/login/ и посмотреть страницу входа для администратора Django сервера, работающего на my.website.com. Независимо от того, какие учетные данные я вставляю, результат проверки HTTP 403 CSRF не удался. Запрос страницы с ошибкой. `.403 Ошибки CSRF при попытке войти в Django Admin через туннель SSH

Я не получаю эту ошибку при переходе непосредственно на my.website.com/admin/login/. Какие настройки могут помочь войти в систему через туннель SSH? Я уже пробовал добавить 'localhost' в ALLOWED_HOSTS. Куки 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 и другие пути из одного домена в другой.

+0

Я добавил '127.0.0.1 my.website.com' в'/etc/hosts/'. Отлично! –

Смежные вопросы