Почему 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)
Почему это происходит?
Ответы
Ответ 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