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
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.
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)
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
- 1. Django vote: quelle est la bonne façon de balises annexant
- 2. Quelle est la bonne façon d'initialiser HRESULT?
- 3. Quelle est la bonne façon de rediriger?
- 4. Quelle est la bonne façon d'assombrir l'écran?
- 5. Quelle est la bonne façon de gérer la version d'assemblage?
- 6. Quelle est la bonne façon d'écrire la méthode 'Get'?
- 7. Quelle est la bonne façon d'utiliser la nouvelle option "--freeze" dans startmigration pour django-south?
- 8. Quelle est la bonne façon de traiter les permissions?
- 9. Quelle est la bonne façon d'utiliser PDO en PHP?
- 10. Quelle est la bonne façon d'écrire ce code?
- 11. Quelle est la bonne façon d'utiliser les URL de Cakephp?
- 12. Quelle est la bonne façon d'effectuer l'alpha-blending? (C)
- 13. Quelle est la bonne façon d'appeler le temporisateur ElapsedEventHandler
- 14. Quelle est la bonne façon d'utiliser str.decode et unicode.encode?
- 15. Quelle est la bonne façon d'écrire cette liste de compréhension?
- 16. Quelle est la bonne façon de tester UnitEngines.Engines.FindView?
- 17. Quelle est la bonne façon de charger un ListBox?
- 18. Quelle est la bonne façon d'encapsuler [NSString stringWithFormat:]?
- 19. Quelle est la bonne façon de sauvegarder les blobs ZODB?
- 20. Quelle est la bonne façon de détecter window.unload dans sproutcore
- 21. Quelle est la bonne façon d'utiliser flexigrid onError
- 22. Quelle est la bonne façon de s'associer avec un ABPerson?
- 23. Quelle est la bonne façon de gérer plusieurs redirections automatiques?
- 24. Quelle est la bonne façon de disposer d'une fenêtre WPF?
- 25. Quelle est la bonne façon d'amorcer Drupal avec Kohana 3?
- 26. Quelle est la bonne façon de fork() dans FastCGI?
- 27. Quelle est la bonne façon de gérer les extensions d'image?
- 28. Quelle est la bonne façon d'obtenir un compte sur CPAN?
- 29. Quelle est la bonne façon d'inclure un email dans Javadoc?
- 30. Quelle est la bonne façon de relier 2 objets javascript?
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
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
OK, je vois. Merci Dingle. – FunLovinCoder