Django でユーザーの IP アドレスを取得する方法
Django アプリケーションを開発する場合、ユーザーの IP アドレスを取得する必要が生じる場合があります。これは、ローカリゼーション、トラフィック分析、またはセキュリティ目的に役立ちます。
一般的なアプローチの 1 つは、request.META['REMOTE_ADDR'] 属性を使用することです。ただし、Django アプリケーションがリバース プロキシの背後にデプロイされている場合、REMOTE_ADDR ヘッダーにユーザーの実際の IP アドレスが含まれていない可能性があります。
この問題に対処するために、Django は get_client_ip ヘルパー関数を提供します。この関数は、クライアントの元の IP アドレスを示すためにリバース プロキシによって一般的に使用される HTTP_X_FORWARDED_FOR ヘッダーをチェックします。このヘッダーが存在する場合、関数はリストの最初の IP アドレスを返します。それ以外の場合は、REMOTE_ADDR ヘッダーに戻ります。
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>
get_client_ip 関数が正しく動作するように、リバース プロキシが正しく構成されていることを確認してください。たとえば、Apache の場合、mod_rpaf モジュールのインストールが必要になる場合があります。
get_client_ip 関数を実装したら、リクエスト オブジェクトを引数として渡すことでユーザーの IP アドレスを取得できます。
<code class="python">ip_address = get_client_ip(request)</code>
以上がリバース プロキシを使用する場合、Django で真のユーザー IP アドレスを取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。