Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Cara Mendapatkan Alamat IP Pengguna dengan Tepat di Django dengan Proksi Terbalik?

Bagaimana Cara Mendapatkan Alamat IP Pengguna dengan Tepat di Django dengan Proksi Terbalik?

DDD
DDDasal
2024-11-05 08:08:02394semak imbas

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

Django: Mendapatkan Alamat IP Pengguna

Masalah:

Anda menghadapi KeyError semasa cuba mendapatkan semula alamat IP pengguna menggunakan permintaan.META['REMOTE_ADDR'].

Analisis:

Alamat jauh dikembalikan melalui permintaan.META['REMOTE_ADDR'] mungkin bukan IP pengguna sebenar jika proksi terbalik terlibat.

Penyelesaian:

Untuk mendapatkan alamat IP pengguna dengan tepat, ikut langkah berikut:

  1. Tentukan a fungsi utiliti untuk mendapatkan semula IP klien:
<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. Ganti kod anda sebelum ini dengan:
<code class="python">client_ip = get_client_ip(request)</code>

Pertimbangan:

  • Pastikan proksi terbalik anda (cth., mod_rpaf untuk Apache) dikonfigurasikan dengan betul.
  • Gunakan item first dalam X-Forwarded-For untuk kebanyakan kes.
  • Awas: Dalam persediaan tertentu (cth. Heroku), anda mungkin perlu menggunakan item terakhir sebagai ganti.
  • Untuk mendapatkan HttpRequest.META dokumentasi dalam Django, rujuk dokumentasi rasmi.

Atas ialah kandungan terperinci Bagaimana Cara Mendapatkan Alamat IP Pengguna dengan Tepat di Django dengan Proksi Terbalik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn