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.py
staat 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.1
en 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.py
toe 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 = [‘*’]