web-dev-qa-db-fra.com

Pourquoi Django lance une erreur "DisallowedHost at /"?

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?

46
alukin

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é.

Explication:

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

74
randyr

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

2
kapoc

For Run Django Project on localhost with free hosting by "ngrok"

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: //

0
Vaibhav Savaliya

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

0
chad