Maison > développement back-end > Tutoriel Python > Comment obtenir avec précision l'adresse IP d'un utilisateur dans Django avec des proxys inverses ?

Comment obtenir avec précision l'adresse IP d'un utilisateur dans Django avec des proxys inverses ?

DDD
Libérer: 2024-11-05 08:08:02
original
511 Les gens l'ont consulté

How to Accurately Obtain a User's IP Address in Django with Reverse Proxies?

Django : Obtention de l'adresse IP de l'utilisateur

Problème :

Vous rencontrez une KeyError lorsque vous essayez de récupérer l'adresse IP de l'utilisateur en utilisant request.META['REMOTE_ADDR'].

Analyse :

L'adresse distante renvoyée par request.META['REMOTE_ADDR'] peut ne pas être l'adresse IP réelle de l'utilisateur si un proxy inverse est impliqué.

Solution :

Pour obtenir l'adresse IP de l'utilisateur avec précision, suivez ces étapes :

  1. Définissez un fonction utilitaire pour récupérer l'IP du client :
<code class="python">def get_client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')
    return ip</code>
Copier après la connexion
  1. Remplacez votre code précédent par :
<code class="python">client_ip = get_client_ip(request)</code>
Copier après la connexion

Considérations :

  • Assurez-vous que votre proxy inverse (par exemple, mod_rpaf pour Apache) est configuré correctement.
  • Utilisez le premier élément dans X-Forwarded-For dans la plupart des cas.
  • Attention : Dans certaines configurations (par exemple, Heroku), vous devrez peut-être utiliser le dernier élément à la place.
  • Pour obtenir le HttpRequest.META documentation dans Django, reportez-vous à la documentation officielle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal