Подтвердить что ты не робот

Почему Django бросает ошибку "DisallowedHost at/"?

Я настраиваю свой собственный сервер Django, используя этот учебник Digital Ocean. Я создал структуру Django после каждого шага и запустил сервер, используя следующую команду:

./manage.py runserver 0.0.0.0:8000

Когда я попытался посетить IP на порту 8000, была показана следующая ошибка:

DisallowedHost at /
Invalid HTTP_HOST header: 'XXX.XXX.XXX.XXX:8000'. You may need to add u'XXX.XXX.XXX.XXX' to ALLOWED_HOSTS.

(IP заменен на X)

Почему это происходит?

4b9b3361

Ответ 1

В вашем settings.py есть список, который называется ALLOWED_HOSTS. Вам нужно добавить IP-адрес, который вы видите в сообщении об ошибке, в этот список:

ALLOWED_HOSTS = ['XX.XX.XX.XX']

Порт не должен быть добавлен.

Объяснение:

Django проверяет заголовок Host HTTP-запроса на наличие URL/IP-адреса, который находится в пределах разрешенных хостов.

С сайта Джанго:

Это мера безопасности для предотвращения атак заголовка HTTP-хоста, что возможно даже при многих, казалось бы, безопасных конфигурациях веб-сервера.

https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts

Ответ 2

Включите оба ('www.name.com', 'ip.ip.ip.ip'). Установите Debug = True, затем повторите IP-адрес и URL-адрес.

Перейдите в раздел Traceback, найдите сообщение [повысить DisallowedHost (msg)] щелкните → ▼ Local Vars

Он покажет имя входящего домена и настройки для разрешенных хостов:

*Variable       Value
*allowed_hosts  ['ip.ip.ip.ip', 'name.com']
*domain          'something.com'
*

Скопируйте входящее значение в ваши settings.py. Если вы видите старые настройки, перезагрузите сервер \nginx