2010-05-15 6 views
0

J'essaie de développer une application en utilisant Django 1.1 sur Webfaction. Je voudrais obtenir l'adresse IP de la demande entrante, mais quand j'utilise request.META ['REMOTE_ADDR'] il retourne 127.0.0.1. Il semble y avoir un certain nombre de façons différentes d'obtenir l'adresse, par exemple en utilisant HTTP_X_FORWARDED_FOR ou en branchant un middleware appelé SetRemoteAddrFromForwardedFor. Je me demandais quelle était la meilleure approche?Django: Quelle est la bonne façon d'obtenir l'adresse IP demandeuse?

Répondre

1

J'utilise le middleware parce que cette façon Je n'ai pas besoin de changer le code de l'application.

Si je souhaite migrer mon application vers d'autres serveurs d'hébergement, il me suffit de modifier le middleware sans affecter les autres parties.

La sécurité n'est pas un problème car sur WebFaction, vous pouvez faire confiance à ce qui vient du serveur frontal.

+0

SetRemoteAddrFromForwardedFor a été déprécié, donc je ne peux pas l'utiliser 1.1. Y a-t-il d'autres logiciels intermédiaires dont vous parlez? – FunLovinCoder

+0

Je viens d'en créer un nouveau avec mon projet, essentiellement un clone du django. La raison pour laquelle le middleware a été supprimé est que HTTP_X_FORWARDED_FOR peut être arbitraire sur différents environnements d'hébergement, il ne devrait donc pas faire partie de la base de code django. – Dingle

+0

OK, je vois. Merci Dingle. – FunLovinCoder

2

Le middleware proxy à distance était removed in Django 1.1.1 avec un clin d'œil à remarquer que la confiance REMOTE_ADDR ou HTTP_X_FORWARDED pour n'est pas sûr de toute façon (dans le cas où vous aide également à décider quoi faire)

+0

Merci pour la réponse. J'espérais que ça n'allait pas être le cas. Ce n'est pas vraiment important pour moi si l'appelant bizarre usurpe son adresse IP; la grande majorité sera exacte. Je suppose que je vais utiliser HTTP_X_FORWARDED_FOR directement. – FunLovinCoder

Questions connexes