Maison > développement back-end > Tutoriel Python > Comment obtenir la véritable adresse IP de l'utilisateur dans Django lors de l'utilisation d'un proxy inverse ?

Comment obtenir la véritable adresse IP de l'utilisateur dans Django lors de l'utilisation d'un proxy inverse ?

Susan Sarandon
Libérer: 2024-11-05 03:51:02
original
835 Les gens l'ont consulté

How to Get the True User IP Address in Django When Using a Reverse Proxy?

Comment récupérer l'adresse IP de l'utilisateur dans Django

Lors du développement d'applications Django, vous pouvez rencontrer le besoin d'obtenir l'adresse IP de l'utilisateur. Ceci est utile à des fins de localisation, d'analyse du trafic ou de sécurité.

Une approche courante consiste à utiliser l'attribut request.META['REMOTE_ADDR']. Cependant, si votre application Django est déployée derrière un proxy inverse, l'en-tête REMOTE_ADDR peut ne pas contenir la véritable adresse IP de l'utilisateur.

Pour résoudre ce problème, Django fournit la fonction d'assistance get_client_ip. Cette fonction vérifie l'en-tête HTTP_X_FORWARDED_FOR, qui est couramment utilisé par les proxys inverses pour indiquer l'adresse IP d'origine du client. Si cet en-tête est présent, la fonction renvoie la première adresse IP de la liste. Sinon, il revient à l'en-tête REMOTE_ADDR.

Voici comment utiliser la fonction get_client_ip :

<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

Assurez-vous que votre proxy inverse est correctement configuré pour que la fonction get_client_ip fonctionne correctement. Par exemple, pour Apache, vous devrez peut-être installer le module mod_rpaf.

Une fois que vous aurez implémenté la fonction get_client_ip, vous pourrez récupérer l'adresse IP de l'utilisateur en passant l'objet request en argument :

<code class="python">ip_address = get_client_ip(request)</code>
Copier après la connexion

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