ホームページ >バックエンド開発 >Python チュートリアル >リバースプロキシを使用して Django でユーザーの IP アドレスを正確に取得するにはどうすればよいですか?

リバースプロキシを使用して Django でユーザーの IP アドレスを正確に取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-05 08:08:02402ブラウズ

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

Django: ユーザー IP アドレスの取得

問題:

ユーザーの IP アドレスを取得しようとすると KeyError が発生しますusing request.META['REMOTE_ADDR'].

分析:

request.META['REMOTE_ADDR'] によって返されたリモート アドレスは、実際のユーザー IP ではない可能性がありますリバース プロキシが関係している場合。

解決策:

ユーザーの IP アドレスを正確に取得するには、次の手順に従います。

  1. クライアント 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>
  1. 前のコードを次のように置き換えます:
<code class="python">client_ip = get_client_ip(request)</code>

考慮事項:

  • リバース プロキシ (Apache の mod_rpaf など) が正しく構成されていることを確認してください。
  • ほとんどの場合、X-Forwarded-For の 最初の 項目を使用します。
  • 注意: 特定の設定 (例: Heroku) では、代わりに 最後の 項目を使用する必要がある場合があります。
  • HttpRequest.META を取得するにはDjango のドキュメントについては、公式ドキュメントを参照してください。

以上がリバースプロキシを使用して Django でユーザーの IP アドレスを正確に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。