Django Недопустимый заголовок HTTP_HOST: '<ip>'. Вам может потребоваться добавить '<ip>' в ALLOWED_HOSTS

<ip> показывает фактический ip-адрес, я просто не включил его в заголовок. Я считаю, что этот ip-адрес является внутренним ip-адресом моего экземпляра EC2. Я использую AWS Elastic beanstalk для размещения.

Я вижу, что на этот вопрос уже много раз отвечали на SO, и ответ всегда заключается в том, чтобы добавить ip-адрес в ALLOWED_HOSTS, но в моем случае я установил ALLOWED_HOSTS=['*'] и все равно получаю ошибку.

Странно то, что я получаю ошибку только при попытке зайти на сайт с телефона. Когда я захожу через браузер на настольном компьютере, все работает нормально...

То, что я пробовал:

  1. I've double checked my elastic beanstalk deployment and the changes are definitely deployed.

Ок, возможно, это не будет ответом для других людей, но это было для меня... В моем случае, я делал http GET запрос с фронтенда и забыл лишнее "/" в конце url. Мой django urls.py определяет url с косой чертой в конце. Моим исправлением было добавить дополнительный "/" при выполнении http GET.

На моем рабочем столе это обрабатывалось автоматически, потому что django отвечал автоматическим перенаправлением (302), и мой настольный браузер переходил на url с / в конце, но мой телефон не делал перенаправление!

Это каким-то образом вызывало ошибку недопустимого заголовка HTTP_HOST.

Для большинства людей исправление ошибки, подобной этой, заключается в добавлении всех ваших доменов в список ALLOWED_HOSTS.

О, и если вы используете elasticbeanstalk, как я, не забудьте добавить доменное имя AWS. Оно должно выглядеть примерно так:

ALLOWED_HOSTS = ['<your-unique-id>.elasticbeanstalk.com', 'example.com', '<your-subdomain>.example.com']

DON'T do ALLOWED_HOSTS = ['*'] in prod!!!

Вернуться на верх