Je configure mon propre serveur Django en utilisant ce Tutoriel Digital Ocean . J'ai créé le framework Django après chaque étape, et j'ai exécuté le serveur en utilisant cette commande:
./manage.py runserver 0.0.0.0:8000
Lorsque j'ai essayé de visiter l'IP au port 8000, l'erreur suivante a été affichée:
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 substitué par des X)
Pourquoi cela arrive-t-il?
Dans votre settings.py
, il existe une liste appelée ALLOWED_HOSTS
. Vous devez ajouter l'adresse IP que vous voyez dans l'erreur à cette liste:
ALLOWED_HOSTS = ['XX.XX.XX.XX']
Le port ne doit pas être ajouté.
Django vérifie l'en-tête Host
de la requête HTTP pour une adresse URL/IP qui se trouve dans les hôtes autorisés.
Depuis le site Web Django:
Il s'agit d'une mesure de sécurité pour empêcher les attaques d'en-tête d'hôte HTTP, qui sont possibles même dans de nombreuses configurations de serveur Web apparemment sûres.
https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
vous pouvez inclure cette configuration dans le fichier settings.py
ALLOWED_HOSTS = ['*']
Important
Modifiez cette configuration lorsque vous déployez votre application dans un environnement de production
lancez ngrok http 8000
(avant d'exécuter ceci dans votre projet, assurez-vous que votre projet doit être exécuté sur localhost comme- python manage.py runserver)
http://563ae936.ngrok.io -> http: // localhost: 80
Modifier le fichier Setting.py
ALLOWED_HOSTS '563ae936.ngrok.io', 'localhost', '127.0.0.1', 'testserver']
Ici "563ae936.ngrok.io" Remplacez votre nom d'hôte en supprimant == [-http: // ou https: //
Incluez les deux ('www.name.com', 'ip.ip.ip.ip') Définissez Debug = True, puis réessayez l'adresse IP et URL.
Accédez à la section Traceback, recherchez le message [augmenter DisallowedHost (msg)] cliquez sur -> ▼ Variables locales
Il montrera le nom de domaine entrant et les paramètres des hôtes autorisés:
*Variable Value
*allowed_hosts ['ip.ip.ip.ip', 'name.com']
*domain 'something.com'
*
Copiez la valeur entrante dans votre settings.py. Si vous voyez les anciens paramètres redémarrer le serveur\nginx