Waarom geeft Django fout “DisallowedHost at /”?

Ik ben mijn eigen Django-server aan het opzetten met behulp van deze Digital Ocean-zelfstudie. Ik heb het Django-framework na elke stap gemaakt en de server uitgevoerd met deze opdracht:

./manage.py runserver 0.0.0.0:8000

Toen ik probeerde het IP-adres op poort 8000 te bezoeken, werd de volgende fout weergegeven:

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 vervangen door X’s)

Waarom gebeurt dit?


Antwoord 1, autoriteit 100%

In uw settings.pystaat een lijst met de naam ALLOWED_HOSTS. U moet het IP-adres dat u in de foutmelding ziet aan die lijst toevoegen:

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

Opmerking: alleenvoeg het IP-adres toe en nietde poort (bijv. 127.0.0.1en niet 127.0.0.1:8000)

Uitleg:

Django controleert de Host-header van het HTTP-verzoek op een url/ip-adres dat zich binnen de toegestane hosts bevindt.

Van de django-website:

Dit is een beveiligingsmaatregel om HTTP Host-headeraanvallen te voorkomen, die zelfs onder veel schijnbaar veilige webserverconfiguraties mogelijk zijn.

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


Antwoord 2, autoriteit 9%

Voor ontwikkeling kunt u het jokerteken *gebruiken om alle hosts in settings.pytoe te staan:

ALLOWED_HOSTS = [‘*’]

Belangrijk

Wijzig deze configuratie wanneer u uw app in een productieomgeving implementeert.


Antwoord 3

Beide opnemen (‘www.name.com’, ‘ip.ip.ip.ip’)
Stel Debug = True in en probeer het IP & URL-adres.

Ga naar het gedeelte Traceback, zoek het bericht [ raise DisallowedHost(msg) ]
klik -> ▼ Lokale vars

Het toont de inkomende domeinnaam en de instellingen voor toegestane hosts:

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

Kopieer de binnenkomende waarde naar uw settings.py. Als je oude instellingen ziet, herstart de server\nginx


Antwoord 4

Soms is het niet genoeg om het gewoon aan de host toe te voegen, zoals een gefrustreerd keer op keer geprobeerd heeft. Soms zit het vast in de cache en krijg je dezelfde foutmelding, zelfs als je alles goed hebt gedaan. In dat geval werkte voor mij de poort, van 8081 en het cacheprobleem was voorbij.

Ik heb het als volgt uitgevoerd:

python3 manage.py runserver 127.0.0.1:8081

Antwoord 5

Voor Run Django Project op localhost met gratis hosting door “ngrok”

voer ngrok http 8000 uit

(voordat u dit in uw project uitvoert, moet u ervoor zorgen dat uw project moet worden uitgevoerd op localhost like-python manage.py runserver)

http://563ae936.ngrok.io-> http://localhost:8000

Instelling.py bewerken

ALLOWED_HOSTS = [‘563ae936.ngrok.io’, ‘localhost’, ‘127.0.0.1’, ‘testserver’]

Hier “563ae936.ngrok.io” Vervang uw hostnaam door http://of https://

te verwijderen


Antwoord 6

Ga naar setting.py

ALLOWED_HOSTS = [‘*’]

Other episodes